Я внес небольшое изменение в файл, который мы используем, и собирался зафиксировать мое редактирование.
$ svn commit -m "comment"
Sending pom.xml
svn: E160042: Commit failed (details follow):
svn: E160042: File or directory 'pom.xml' is out of date; try updating
svn: E160024: resource out of date; try updating
AFAIK, в репо ничего не должно было измениться, верно?
Очевидно, кто-то внес изменения, и я забыл обновить свою рабочую копию, прежде чем редактировать файл, обновляю.
$ svn update
Updating '.':
U another.unrelated.file
G pom.xml
Updated to revision 11943.
Как и ожидалось, наши изменения были объединены (в мою рабочую копию, верно?), Поэтому я проверяю статус.
$ svn status
Без изменений? Зачем? Разве объединенная рабочая копия pom.xml не должна быть помечена как измененная?
Я бегу svn info
, чтобы посмотреть, что происходит.
$ svn info
Path: .
Working Copy Root Path: working/dir
URL: https://not.relevant
Repository Root: https://not.relevant
Repository UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Revision: 11943
Node Kind: directory
Schedule: normal
Last Changed Author: otherguy
Last Changed Rev: 11856
Last Changed Date: 2012-01-04 16:12:42 +0100 (Wed, 04 Jan 2012)
Разве "Последнее изменение" не должно быть моим изменением вместо того, которое otherguy 8 дней назад? Поэтому я смотрю файл репо, чтобы посмотреть, что там на самом деле.
svn cat https://company.com/repo/path/to/pom.xml | less
И показывает объединенную версию файла! (С изменениями, сделанными и мной, и другим человеком).
Что здесь произошло? Svn изменил существующую версию файла с моими изменениями, не обновляя метаданные? Это вообще возможно?