Как вы думаете, вы обманываете SVN в выполнении шага № 6? Кажется, вы не поняли, что идет не так. SVN никогда не будет фиксировать из рабочей копии, которая не обновлена , поэтому шаг # 6 не будет работать без предварительного изменения пользователем B и объединения изменений пользователя A. Честно. Попытайся.
Я думаю, что вместо этого происходит следующее:
- Оформление проекта.
- B проверяет тот же проект.
- A добавляет файл.
- A фиксирует изменения.
- B добавляет файл, но забывает сохранить проект / решение.
- B пытается зафиксировать изменения и получает сообщение, которое он должен сначала обновить.
- B обновлений.
- B переключается обратно на VS. VS сообщает ему, что проект / решение изменено на диске, и спрашивает, хочет ли он: а) перезагрузить диск и потерять свои изменения; б) переопределить версию на диске.
- B не понимает, не пытается понять, считает свои изменения ценными и выбирает b), перезаписывая изменения на диске.
- B все еще не пытается понять и, следовательно, не сравнивает версию, которую он имеет на диске, с последней зафиксированной версией, и, таким образом, пропускает то, что он отверг изменения A.
- B Проверяет, отменяет изменения A.
Я видел, как это происходило время от времени, обычно с пользователем B, который на самом деле не понимает рабочий процесс SVN (или CVS, FTM).
Итак, вот несколько подсказок:
Не обновлять, если вы не сохранили все («Файл» -> «Сохранить все»; для меня это Ctrl + Shift + S). Если вы допустили эту ошибку и застряли, переопределите изменения на диске, а затем объедините потерянные изменения вручную . (Это может также работать для обновления файла проекта / решения обратно до версии N-1, а затем снова для HEAD, чтобы SVN выполнил слияние.)
Не фиксируйте, не проверяя, какие файлы вы изменили и быстро посмотрите на различия , чтобы увидеть, есть ли изменения это то, что вы ожидаете.
Фиксация рано, частая фиксация . Чем больше разработчиков работают с одной и той же кодовой базой, тем больше вероятность возникновения конфликтов. Чем дольше вы изменяете свою рабочую копию без обновления, тем больше вероятность возникновения конфликтов. Поскольку количество разработчиков обычно не в ваших руках, частота обновления - это то, что вы можете использовать для уменьшения вероятности конфликтов.