настроить локальный SVN с помощью svn: external branch для объединения (с нуля) - PullRequest
0 голосов
/ 17 января 2012

Интересно, можно ли настроить систему SVN subversion (кстати, я на Ubuntu 11.10) для конкретной папки с двумя разными источниками и отслеживать изменения одновременно?

Ситуация следующая:

  1. Существует проект с открытым исходным кодом, который регулярно обновляется (из svn: // ...).Я использую это в качестве основы для добавления некоторых функций, которые мне нужны.Я не имею права отправлять свои изменения или делать ветвления или что-то подобное на разработчиков svn.

  2. Изменение моего кода Я отслеживаю то, что я изменил через локальный svn (file: /// usr / ...)

Я хотел бы время от времени объединять мою версию с официальными обновлениями, но при этом сохраняю свой локальный svn.Как мне его настроить?

Или было бы проще иметь SVN (для официальной Subversion) + какую-то другую систему, например Git?

p / s / Я работаю только над кодом самв Eclipse с подключаемым модулем Subclipse.

UPDATE1:

при просмотре книги SVN, вот как я, вероятно, должен сделать ветвь в моем случае:

Первоначальный импорт:

svn import /path/to/3rd-party-code \
          file:///usr/.../vendor/name/current \
          -m "importing initial 1.0 vendor drop"

Пометить это:

svn copy file:///usr/.../vendor/name/current  \
         file:///usr/.../vendor/name/1.0      \
         -m "tagging name-1.0"

Вывести в транк:

svn copy file:///usr/.../vendor/name/1.0  \
         file:///usr/.../trunk/        \
       -m "bringing name-1.0 into the trunk"

А затем извлечь из транка и начать модификацию.Итак, как все меняется с «внешними»?

Обновление 2:

Это то, как все должно быть с нуля:

svnadmin create /usr/.../svnrepo

svn import svn://path/to/3rd-party-code \
     file:///usr/.../svnrepo/name/branch/official \
     -m "importing initial XXXX rev. vendor drop"

svn copy file:///usr/.../svnrepo/name/branch/official  \
         file:///usr/.../svnrepo/name/trunk      \
         -m "bringing rev XXXX into the trunk"

svn propedit svn:externals svn://path/to/3rd-party-code name/branch/official

Слияние:

svn merge -r XXXX:HEAD name/branch/official
svn ci -m "Merged YYYY official revision to trunk"

ОБНОВЛЕНИЕ 3:

svnadmin create /usr/.../svnrepo

svn mkdir -m "Create folders" \
          file:///usr/../svnrepo/name/branches \
          file:///usr/../svnrepo/name/branches/official \
          file:///usr/../svnrepo/name/trunk

Внешние:

svn propedit svn:externals file:///usr/.../svnrepo/name/branches/official

(ввод "svn: // путь / к / сторонний код")

svn copy file:///usr/.../svnrepo/name/branches/official  \
         file:///usr/.../svnrepo/name/trunk      \
         -m "bringing rev XXXX into the trunk"    

Теперь проблема в том, что когда я "соединяю" транк, я получаю следующую структуру:

official/svn:externals/folder1/file1

Что-то, чего я точно не хочу:)

Слияние:

svn merge name/branches/official
svn ci -m "Merged YYYY official revision to trunk"

Ответы [ 2 ]

0 голосов
/ 17 января 2012

папка с двумя различными источниками и отслеживание изменений одновременно?

Это невозможно с SVN - WC имеет один путь для один репо

Но ваша задача может быть покрыта svn: externals и стратегией "Vendor Branches":

  • отдельная ветка для внешнего проекта, определенная как svn: externals (без использования PEG-ревизии в URL)
  • ваша разработка происходит в ствол
  • ветвь (после обновлений с новыми ревизиями) периодически сливаются в ствол
0 голосов
/ 17 января 2012

Ваша ситуация описана в книге SVN в главе о филиалах .Если в проекте с открытым исходным кодом также используется SVN-репозиторий, вы можете дополнительно воспользоваться внешними функциями .

...