2009-08-27 4 views
3

Фон: Я унаследовал некоторый код MATLAB для анализа данных для моего Ph.D. исследование. Чтобы помочь мне лучше понять код, я сравнил код с минимальным подмножеством файлов, необходимых для запуска кода для тестового примера.Поддержание ветвей разработки, где одна ветвь является подмножеством другой ветки

Вопрос: Я хотел бы совершить этот код в систему управления версий, как две ветвей, master ветви, содержащей весь код, и minimal ветви, содержащей мою урезанную версию коды, и быть в состоянии чтобы объединить изменения между этими ветвями. Как я могу это сделать?

Я бы предпочел сделать это с помощью одного рабочего каталога и названных ветвей в Git или Mercurial, но я открыт для других предложений.

Edit: Я думал, что я видел ранее переполнением стека вопрос вдоль этих линий, и я нашел его: Pushing updates to a pruned Mercurial branch. В комментарий к принятому ответу, это упомянул, что термин для того, что я пытается сделать, это «узкое клонирование», и что это незавершенное производство для Git и Mercurial.

ответ

4

И git, и mercurial должны работать нормально. Создайте основную ветвь, затем скопируйте ее в минимальную ветвь, затем разделите минимальную ветвь, чтобы она выглядела как ваша реализация (удалите все дополнительные файлы, скопируйте файлы, которые вы изменили).

С этого момента используйте регулярные команды объединения между ветвями. Вероятно, лучше всего слияние с минимальной ветвью на основную ветвь. Слияние с другим путем более вероятно дает вам жалобы на то, что слияние не удалось (с конфликтами), поскольку некоторые файлы применяются к удаленным файлам/удаленным функциям.

+1

Обратите внимание, что вы также можете сделать две первоначальные фиксации в одном репозитории, что позволит вам сохранить фиксацию, которая удаляет большое количество файлов, но с другой стороны имеет избыточную информацию между вашими первоначальными фиксациями. – Cascabel