Какую версию клиента Subversion вы используете?
В клиентах до Subversion 1.7 Subversion определяет изменения файла, просматривая содержимое файла и сохраненную базу в каталоге .svn
.Subversion сравнивает как свойства, так и содержимое самого файла, чтобы определить любые изменения.Например:
$ svn up
U file1
U file2
U file3
В этом примере вы увидите как минимум следующие шесть файлов:
.svn/text-base/file1.svn-base
.svn/text-base/file2.svn-base
.svn/text-base/file3.svn-base
.svn/prop-base/file1
.svn/prop-base/file2
.svn/prop-base/file3
Он не смотрит на отметку времени, чтобы определить, имеет ли файлизменен (как это сделал бы Makefile).
Оба svn up
и svn commit
используют один и тот же алгоритм, чтобы определить, следует ли записывать файл как измененный.
Есть также файлназывается .svn/entries
, который содержит список записей, которые есть в каталоге.Это позволяет Subversion отслеживать добавления и удаления, но не используется для обнаружения изменений.
Я вижу проблемы во время слияния, когда неизмененный файл фиксируется.Тем не менее, это всегда проявляется при выполнении svn status
, и содержимое файла не изменилось, но свойство svn:merge info
было.
Ваша проблема, похоже, совсем другая.Во-первых, вы не видите изменений при выполнении svn status
, но они фиксируются.Что делать, если вы делаете svn -v log
в каталоге?Файлы отображаются как измененные?Что делать, если вы делаете svn status -v
?Это покажет все файлы, включая те, которые были проигнорированы, и те, которые не были изменены.
Клиент сообщает серверу, какие файлы были изменены, а не сервер, определяющий, какие файлы зафиксировать.Поэтому проблема связана с вашим клиентом Subversion:
Какой у вас клиент Subversion и какая у вас ОС?Я знаю, что Cgywin может быть проблематичным, особенно если вы делитесь своим рабочим каталогом с клиентом Windows Subversion.Могут возникнуть некоторые проблемы с разделением рабочего каталога между двумя разными типами клиентов (такими как клиент с графическим интерфейсом и клиент командной строки).Например, клиент AnkSvn VisualStudio создает каталоги _svn
.TortoiseSVN может использовать их (если вы настроите его правильно), но не стандартную командную строку Subversion.
И, конечно, клиент командной строки 1.7 сильно отличается от более ранних клиентов командной строки.В стандартном клиенте командной строки 1.7 каталог .svn
находится только в корневом каталоге, и я считаю, что он использует контрольные суммы для определения того, было ли изменено содержимое файла.
Извините, я не смог предоставитьдальнейшая помощь.Может быть, я дал вам кое-что для продолжения?Дайте мне знать ваш клиент Subversion и ОС, и это может помочь.Также дайте мне знать, если вы используете несколько клиентов Subversion в одном каталоге.Это тоже может быть подсказкой.
Я пытался зайти в $HOME/.subversion/conf
, чтобы посмотреть, есть ли какие-то настройки, которые могли бы изменить ситуацию, но я не нашел ничего, что могло бы вызвать такое поведение.