2013-11-24 2 views
0

Существует несколько соавторов проекта, сохраненного в SVN. Текущая версия репозитория - 10. Я только что узнал, что мне нужно вернуться к версии 5 и начать работать оттуда. Затем я вношу изменения и делаю новую фиксацию (ревизия 11).Как SVN возвращается к другим сотрудникам проекта?

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

+2

HTTP://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html#svn.tour.cycle.resolve –

ответ

2

Предполагая, что вы должным образом отредактируете эти изменения (через reverse merge), это не влияет на них иначе, чем любое другое слияние изменений между ветвями или даже совершает «нормальный» набор изменений вперед.

+0

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

+0

Да, используется возврат из меню SVN. Теперь в версии 5 отсутствуют некоторые из классов, которые они делали в версиях 5, 6 и т. Д. После слияния изменений они потеряют эти классы правильно? Любой способ предотвратить это? – sandalone

+0

Если вы использовали «revert», вы не отменили изменения должным образом. Вам нужно сделать обратное слияние. Да, если вы сделаете ревизию, которая удалит файлы, они будут удалены из других рабочих копий, когда они будут обновлены * если * в этих WCs не обнаружены локальные изменения. Вы не можете «предотвратить это», потому что SVN предназначен для работы. Единственным обходным решением является копирование этих файлов в безопасное место, обновление, а затем их копирование. Но в этот момент вы действительно задираете историю изменений. – alroc

1

Вы можете вернуться все изменения между версиями 6 до 10 (и сделать новую версию 12, которая будет соответствовать тому, что было в правке 5), используя svn merge команду:

$ svn merge -r11:6 . 

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

$ svn cp -r5 $REPO/[email protected] $REPO/branches/revert_to_5 

После создания филиала, вы можете переключить рабочую копию этой ветви:

$ svn switch $REPO/branches/revert_to_5 

Затем совершить ваши изменения, которые будут находиться на этой ветви

$ svn commit -m"My commits on revision 5" 

После того, как вы сделаете это, вы должны понять, что нужно сделать, чтобы получить вас и ваших коллег работать вместе. Может быть, они тоже хотят работать сук, или, может быть, вы могли бы решить, чтобы положить ваши изменения на стволе:

$ svn co $REPO/trunk 
$ cd trunk 
$ svn merge $REPO/branches/revert_to_5 

Затем, удалять ветку, так как вам больше не нужно

$ svn delete -m"No longer needed" $REPO/branches/revert_to_5 
+0

Можно ли это сделать из меню, поскольку я не могу найти эту команду? Или это такая команда, которая должна выполняться только с консоли? Плагин TortoiseSVN и Eclipse SVN под вопросом. – sandalone

+0

@sandalone, вы можете захотеть пометить черепахой в будущем, чтобы получить ответы, используя черепаху. – crashmstr

+0

@crashmstr Я пропустил его намеренно, так как он не связан с Черепахой конкретно. Просто спросил Дэвида, если это произойдет, он это знает. – sandalone

Смежные вопросы