Я столкнулся с некоторым поведением, которого я не ожидал от Subversion, и обнаружил это почти случайно: измененный файл не помечается как измененный.
У меня есть модульный тест с использованием электронной таблицы Microsoft Excel в качестве входного файла. Юнит тест вычисляет контрольную сумму CRC; мой тест начал проваливаться из-за изменения контрольной суммы.
Тестовый файл хранится в SVN и имеет MIME-тип «application / octet-stream», и поэтому SVN считает его двоичным.
Я получаю то же поведение от TortoiseSVN и клиента командной строки SVN, в данном случае оба основаны на SVN 1.6: когда файл открывается в Excel, тот факт, что он открыт, должен быть закодирован в самом файле; SVN показывает, что файл изменен. Однако, когда файл снова закрывается (без сохранения), он, похоже, возвращается в свое неизмененное состояние: то есть svn status
не перечисляет файл Excel; svn diff
в любом случае не выводит данные из-за двоичности данных.
Подвох в том, что файл теперь не сравнивается в двоичном формате с файлом, хранящимся в хранилище. (Если экспортируется свежая копия, она не сравнивается в двоичном формате с открытой и закрытой копией.) Файл, по-видимому, не изменяется с точки зрения пользователя, поэтому в семантическом смысле ответ SVN является разумным. Но не синтаксически; и SVN по существу синтаксический.
Часть, для которой я не могу найти причину, заключается в том, что SVN не помечает файл как измененный. Я не могу себе представить, что в SVN есть какая-то особая обработка для файлов Excel (и в любом случае тип MIME не относится конкретно к типу MS Excel); не определено ключевое слово SNV. Точно так же я могу представить, что Excel знает что-либо о содержимом скрытого подкаталога .svn, в котором хранится информация о рабочей копии SVN.
Есть ли у вас какие-либо подсказки относительно того, что здесь происходит?
Спасибо, Роб.