Как я могу иметь две ветки «потока разработки» (? )следят друг за другом, оставаясь разными в определенных отношениях?

КРАТКИЙ ОБЗОР:

Я хочу, чтобы два (или более )«потока разработки» / среды отслеживали друг друга, отправляя изменения друг другу в обоих направлениях, не сходясь полностью -, сохраняя при этом определенные ключевые, существенные различия?

ДЕТАЛЬ, ОДИН КОНКРЕТНЫЙ ПРИМЕР:

Вот один конкретный пример:

Я управлял версиями моего домашнего каталога, glew -home, ох, 28 лет. RCS, SCCS, множество оберток RCS, CVS, SVN, короткий период экспериментов с ранними DVCS, такими как Monotone и Darcs, bzr, git, а теперь и Mercurial. На данный момент я в основном доволен использованием Mercurial, хотя при необходимости я вернусь к git или bzr.

Теперь мой домашний каталог похож, но не идентичен во многих системах. Самые большие различия между Cygwin и различными работающими Linux. Я стараюсь сделать их как можно более похожими, но различия возникают, и часто их нужно сохранять.

Вот тривиальный пример различий :на Cygwin, на моем личном ноутбуке, ~/LOG — символическая ссылка на ~/LOG.dir/LOG.cygwin.glew -дома, а на работе ~/LOG — это символическая ссылка на что-то вроде ~/work/LOG.dir/LOG.work.

Причина :в том, что все проприетарное должно оставаться в работе. ~/work — это отдельный репозиторий, ~/work/.hg, который НЕ загружается/извлекается или иным образом не синхронизируется с моим персональным компьютером (s ).

Проблема :Я хочу, чтобы эти символические ссылки (и несколько других файлов )отличались друг от друга. Но я хочу синхронизировать все остальные файлы. Я вношу изменения в свою среду в обоих местах.Если я внесу изменения в свой ~/.emacs на работе, я хочу отправить его домой, и наоборот.

Q :как это сделать удобнее всего?

В старые добрые времена я бы использовал обычный репозиторий, скажем, обычный репозиторий CVS. CVS не обрабатывает символические ссылки, но, скажем, у меня был скрипт, который генерировал символические ссылки из шаблона, хранящегося в CVS. Я бы сделал так, чтобы шаблон символической ссылки для ~/LOG имел разные ветки для моего ноутбука cygwin -и для работы. Я бы создал рабочие пространства, в которых большинство файлов указывало бы на одну и ту же ветку соответствующих репозиториев RCS/CVS, в то время как файлы, отличающиеся между cygwin -linux и work, должны были бы выгружать соответствующие ветки в соответствующие рабочие пространства.

Это сработало, хотя поддерживать его было немного больно.

Я не нашел хорошего способа сделать это с современными DVCS, такими как Mercurial (, Got или Bzr ).

Эти современные инструменты DVCS выполняют ветвление всего -репо, а не ветвление по -файлу. Они не понимают понятия двух ветвей, идентичных для большинства файлов, но различающихся только определенными файлами.

Когда я пытаюсь отслеживать две ветки, я всегда получаю распространение существенных различий.

Некоторые предложили Makefiles. Не привлекательный.

Я подумал о том, чтобы внести существенные изменения в базовые обороты и постоянно перебазировать. Но я не очень люблю перебазировать.

Лучшие идеи приветствуются.

Одеяло?

6
задан Krazy Glew 3 August 2012 в 05:39
поделиться