
У меня есть рабочие копии одного и того же репозитория на двух разных компьютерах (Mac). Есть файл, о котором идет речь (скажем, SomeFile.m
), который отображается как r703 в обеих рабочих копиях, без локальных изменений. Выполнение svn update SomeFile.m
на обеих сторонах не приводит к обновлениям — он считает, что он полностью обновлен с репозиторием.
Однако эти два файла различны. У них разные контрольные суммы, и diff показывает различия, которые важны для кода. Файл правильный в одной из рабочих копий, но не в другой.
Во-первых, как принудительно заменить неправильный файл тем, что есть в репозитории?
Во-вторых, как этот файл вообще оказался в таком состоянии? Из-за неправильного разрешения конфликтов или чего-то в этом роде?
решение1
Если одна версия файла правильная, но вы подозреваете, что версия в репозитории неверна, то см.Как заставить Subversion зафиксировать неизмененный файл?
Если вы хотите принудительно получить файлы из репозитория, см.Принудительная команда svn checkout перезаписывает текущие файлы.
В противном случае просто измените один из файлов, сохраните его в репозитории как новую версию и повторно выполните извлечение на другом компьютере, как указано выше.
решение2
Самый простой способ, который я нашел, чтобы «принудительно» извлечь/обновить определенный файл, — это удалить этот файл в рабочей копии — удалить файловую систему,нет svn-delete
- и запустите обновление рабочей копии. Файл будет восстановлен с версией из репозитория.
Одним из способов, которым файл мог оказаться в таком состоянии, является наличие в нем некоторых локальных изменений, которые остались незамеченными. SVN не зафиксирует файл без разрешения конфликта, и он также останется необновленным.