Вы неправильно понимаете, как изменения работают в SVN.
Когда разработчик A проверяет в первых файлах, им предоставляется ревизия 1 (а также сам репозиторий). Версия 1 становится ревизией HEAD
.
Разработчик B теперь проверяет файлы, а весь репозиторий становится ревизией 2 (во второй раз, когда репозиторий был изменен), хотя отдельные файлы в репо сохраняют свои текущие версии в качестве последней измененной версии. Итак, мы имеем следующее:
DevAFile1 v1.0
DevAFile2 v1.0
DevAFile3 v1.0
DevBFile1 v2.0
DevBFile2 v2.0
HEAD v2.0
Developer C теперь проверяет еще два файла, и эти файлы (и весь репо) являются пересмотр 3:
DevAFile1 v1.0
DevAFile2 v1.0
DevAFile3 v1.0
DevBFile1 v2.0
DevBFile2 v2.0
DevCFile1 v3.0
DevCFile2 v3.0
HEAD v3.0
HEAD
теперь редакция 3, который состоит из трех файлов v1 от разработчика A, двух файлов v2 от разработчика B и двух файлов v3 от разработчика C. Таким образом, проверка версии HEAD
дает вам три отдельные версии файла от отдельных разработчиков, все из которых составляют версию HEAD
.
Это описано в файле справки TortoiseSVN в разделе . Раздел 2.3.3. Ревизии
Общие номера ревизий
В отличие от многих других систем управления версиями, номера ревизий в Subversion относятся к деревьям целиком, а не отдельные файлы. Каждый номер ревизии выбирает целое дерево, определенное состояние репозитория после некоторого зафиксированного изменения. Другой способ подумать о том, что ревизия N представляет состояние файловой системы репозитория после N-го коммита. Когда пользователь Subversion говорит о revision 5 of foo.c'', they really mean
foo.c, как он появляется в редакции 5. «Обратите внимание, что в целом версии N и M файла не обязательно отличаются!
Это можно подтвердить, используя TortoiseSVN's Show log
в отдельном файле в репозитории. Например, если посмотреть на DevFileA1
, вы увидите что-то похожее на:
Revision Action Author Date Message
======== ====== ====== ======== =======
3 ... DevC xx/xx/xxxx Last update message of repo from DevC
1 ... DevA xx/xx/xxxx Checkin message from DevA