SVN: объединить ствол с файлами, которые не имеют истории управления версиями - PullRequest
0 голосов
/ 17 февраля 2011

Я работаю над не очень хорошо организованным проектом по управлению версиями.У меня есть собственная версия нашей программы под управлением версиями (svn);Мой босс, однако, не использует контроль версий, поэтому нет общего репозитория.Он сделал несколько изменений в своей версии программы, и теперь он попросил меня включить эти изменения в мою версию - делать это вручную было бы крайне обременительно, поэтому я подумал, что, возможно, я смогу сохранить все его файлы как часть моей работы и позволитьSVN сделать слияние (я никогда ничего не сливал раньше, я на самом деле не знаю много о SVN, я боюсь ...).Проблема в том, что svn, похоже, сделал только то, что скопировал файлы, добавленные моим боссом в его версию, но, похоже, в мои копии файлов исходного кода не было внесено никаких изменений, которые он изменил в своей версии программы.

Хорошо, вот что я сделал (после онлайн-урока):

  1. Я извлек новую рабочую копию своего ствола и одну из недавно созданных веток (которая содержит файлы, которые ятолько что скопировал из каталога моего босса).Я подумал, что, возможно, это будет безопаснее, чем просто работать с рабочей копией, которую я обычно использую, поскольку я действительно не знал, что я делаю ...
  2. Я cd 'въехал в мою недавно созданную trunk рабочая копия;там я ввел

svn merge file:///home/user/svn/repository/branches/the_new_branch

Я получил этот вывод:

--- Merging r8 through r27 into '.': 
   C macro/forall.mcr
A    macro/upscale.mcr
   C macro/sbond.mcr
...
Summary of conflicts:
  Tree conflicts: 429

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

Если кто-то здесь может мне помочь, это было бы здорово, поэтому большое спасибо заранее!

РЕДАКТИРОВАТЬ: Я использую Linux.

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

в ретроспективе: если вы используете Windows, лучшим выбором будет ручное слияние с использованием WinMerge.

В следующий раз:

  • проверить локальную копию, назовите ее 'Boss'
  • экспортируйте из 'Босса' и дайте ему этот источник
  • продолжайте работать над вашей собственной извлеченной копией
  • , когда изменения боссов сделаны, скопируйте их на Босса
  • обновление 'Босс'
  • проверка 'Босс'

И все готово.

0 голосов
/ 17 февраля 2011

Я бы поступил так, как если бы ваш босс создал ветку функций, а затем слил эту ветку функций в свою ствол:

Попытайтесь выяснить, с какой ревизии вашей ствола ваш босс начал вносить изменения (давайтескажем, это ревизия 1000).

Затем создайте ветку из этой ревизии и переключите свою рабочую копию на эту ветку.

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

Зафиксируйте изменения в ветке.

Затем объедините измененияот магистрали к ветке, начиная с 1000, до головы.Здесь вам придется разрешать конфликты.После того, как это будет сделано, ветвь функций содержит все изменения вашего босса и обновлена ​​со стволом.

Теперь вы можете реинтегрировать ветку функций в ствол и угрожать своему боссу убить его, если он продолжит не использоватьконтроль версий.

...