Вопрос

Я понимаю основную концепцию ветвления и слияния.Все объяснения, которые я нашел, говорят о разветвлении всей вашей магистрали для создания проекта ответвления и работы над ним, а затем об объединении его обратно.Возможно ли разветвить подмножество проекта?

Я думаю, пример поможет мне лучше всего объяснить, что я хочу сделать.Предположим, у меня есть приложение с десятью файлами от file0 до file10.Все файлы взаимозависимы, и для возможности тестирования любого одного файла все остальные должны быть включены в сборку.Я хочу работать с file0, но мне не нужно вносить изменения в file1 через file10.Могу ли я разветвить file0, чтобы изменения, внесенные в file0, обновили что-то вроде myrepos / branches / a-branch / file0, но все остальные файлы в моей рабочей копии будут просто из магистрали?

Причина, по которой я хочу это сделать, заключается в том, что я работаю над огромным приложением j2ee с десятками тысяч файлов, и кажется, что разветвление всего этого займет действительно много времени.Кроме того, я использую eclipse с subclipse (и я могу ошибаться в этом), но похоже, что если я разветвляю проект в eclipse, то мне придется настроить новый проект eclipse, чтобы указать на ветку.К сожалению, импорт этого конкретного проекта из SVN в eclipse занимает несколько часов из-за размера приложения.Для меня нереально тратить на это так много времени.

Я полагаю, что у меня могли быть неправильные концепции.Возможно, для разветвления всего проекта вообще не требуется новая рабочая копия?

Спасибо за любой свет, пролитый на этот вопрос.

Это было полезно?

Решение

Ветвление целого (даже) очень большого дерева в Subversion - это очень дешевая операция, который выполняет ленивое копирование файла (O (1) раз).

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

Другие советы

В Subversion создание ветки - это просто создание копии иерархии каталогов.Следовательно, вы можете разветвлять подмножество, но только в том случае, если это подмножество может быть определено иерархией каталогов.

Могу ли я разветвить file0, чтобы изменения, внесенные в file0, обновили что-то вроде myrepos / branches / a-branch / file0, но все остальные файлы в моей рабочей копии будет просто из багажника?

Чтобы ответить на этот вопрос:Нет, вы не можете разветвлять один файл.Однако то, что, я думаю, вы хотите сделать вместо этого, это создать ветку и работать над file0 там.По мере того, как вы вносите изменения в trunk файлы, вы просто объедините их в свою ветку где вы работаете над file0.

Таким образом, вы всегда будете иметь самую свежую информацию от trunk, который позволит вам протестировать file0 изменяется независимо от магистрали. Тогда вы можете использовать svn switch чтобы переместить ваш "файловый объектив" между стволом и веткой (но будьте осторожны, Eclipse может пожаловаться на такие махинации).

ветвление svn основано на механизме отложенного копирования, поэтому вы можете безопасно разветвлять весь свой проект:это не заняло бы много времени.

Как упоминалось в вопросе "Как мне разветвлять отдельный файл в SVN?", вы могли бы разветвлять подмножество, но я считаю, что это было бы опасно с svn: механизм свойств merginfo:это работает лучше, если это свойство задается из корня проекта.

Ветвление в SVN - это операция O(1).Кроме того, поскольку SVN внутренне использует отложенное копирование, вы платите штраф за пробел только за то, что вы изменяете.

Итак, если вы не уверены, почему бы не пойти дальше и не разветвить весь проект?

(Как упоминал quark, одна из проблем с разветвлением больших проектов заключается в том, что при параллельном извлечении нескольких ветвей / магистрали это может занять много места на локальном диске.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top