Subversion 1.6.x теряет изменения при регистрации - PullRequest
3 голосов
/ 06 мая 2010

Я пытаюсь выяснить, если это известная проблема с SVN 1.6.x Разработчик А изменяет файл и фиксирует его. Разработчик B изменяет тот же файл. Пытается зафиксировать его и получает локальную копию, которая устарела, обновляется, а затем фиксируется.

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

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

Кто-нибудь еще испытал это? У нас это случалось 4 или 5 раз за последние несколько недель, и мы теряли примерно полдня каждый раз, пытаясь выяснить, что было потеряно и т. Д.

Мы начинаем терять доверие к SVN. Должны ли мы думать о переходе на GIT или Mercurial? Будет ли это решить эту проблему?

Ответы [ 2 ]

1 голос
/ 06 мая 2010

Кто-нибудь в вашей команде копирует файлы и папки вручную, чтобы информация о редакции в папках .svn больше не была правильной?

Как описывает Дероберт в ответе на связанный вопрос, перезапись изменений других пользователей возможна, если вы вручную скопируете измененные файлы в недавно обновленную папку SVN:

Вот как процедура ядерного / копирования может отменить изменения других людей:

  1. Оформить заказ, получите r1;
  2. Изменить foo.c, давая r1 + изменения;
  3. Кто-то проверяет изменения в foo.c (вы не знаете, что они сделали это, конечно, и нормальный способ проверка сломана для вас), foo.c в репо теперь r2;
  4. Теперь вы уничтожаете свой репозиторий, кроме foo.c (r1 + изменения);
  5. Вы делаете заказ, получите foo.c r2.
  6. Вы заменяете foo.c своей копией (r1 + изменяется). Subversion, однако, не знает об этом, и думает, что вы на основе ваших изменений на r2, а не на r1.
  7. Checkin, foo.c теперь r3, который только что потерял другого человека. изменения в р2.
0 голосов
/ 07 мая 2010

Если вы забыли сохранить свой файл, затем выполнить 'svn update' (любым удобным вам инструментом), а затем снова сохранить локальную версию файла поверх обновленного файла, тогда вы потеряете изменения, внесенные кем-то другим. 1001 *

Но это , а не Ошибка Subversions: Вам следует сохранить изменения и перезагрузить файлы после обновления. Большинство редакторов имеют функции для этого, и если вы используете такие инструменты, как Eclipse Visual Studio, вы можете обратиться к интегрированным решениям Subversion, чтобы помочь вам в этом.

...