Я хочу, чтобы subversion фиксировал файл, даже если он не изменился. Есть ли способ сделать это?
Как я могу заставить subversion совершить неизменный файл?
Ответ 1
Если вы хотите, чтобы содержимое файла оставалось неизменным (это означает, что вы не можете просто изменить пробелы, как предлагал johnstok), вы всегда можете изменить одно из свойств в файле.
например.
svn propset dummyproperty 1 yourfile svn commit yourfile
Это будет выполнять фиксацию без изменения файла.
Просто убедитесь, что вы не используете один из специальных свойств svn:
. Все остальное должно быть в порядке.
Изменить: Ряд других плакатов спрашивали, почему кто-то захочет это сделать - по-видимому, люди, которые отметили этот ответ, также столкнулись с теми же проблемами.
Я не могу говорить за оригинальный плакат, но один сценарий, где я видел это, заключается в попытке автоматически синхронизировать действия в репозитории Visual Sourcesafe с репозиторием subversion.
Ответ 2
Как ответить на вопрос, почему нужно делать принудительные коммиты. Я видел случаи, когда кто-то использовал сообщение фиксации, которое было неправильным или неясным. Приятно, если вы можете выполнить принудительное коммит, где вы можете исправить эту ошибку. Таким образом, обновленное сообщение фиксации переходит в репозиторий, поэтому оно не потеряется.
Ответ 3
Я обманул это, удалив затем повторное добавление файла-нарушителя. Не самый приятный способ сделать это, и это, вероятно, сломало историю изменений, но это соответствовало моим целям.
Причина для этого: Файл был одним из двух исполняемых файлов, построенных из одного источника (с разными #defines set). Незначительное изменение источника означало, что он изменился, а другой нет. Я хотел записать в истории ревизий, что я действительно обновил его до последней версии (хотя никаких изменений не было).
Возможно, Morten Holdflod Møller указывает, что "файл все равно будет частью новой редакции" будет охватывать это указание, но я думаю, что журнал неизмененного файла не показывал комментарии для этой версии.
Ответ 4
Если это текстовый файл, просто добавьте пробел, например строку.
Ответ 5
Ответ на некоторые вопросы, которые должны быть заданы, должен быть возможен: по какой-то причине svn не распознает различия между файлами doc, поэтому я также хотел бы принудительно совершить фиксацию!
Теперь я перемещаю документацию из статических dirs, svn. файлы похожи на UG_v1.2, UG_v1.3 и т.д. Поэтому, чтобы сохранить историю, я беру 1.2, удаляю версию из имени файла и добавляю и фиксирую ее на svn. Затем я беру ver из второго, скопируйте его по первому и захотите зафиксировать его и более новую версию. Размер файла и дата создания изменяются (не говоря о том, что внутри документа), но svn утверждает, что он совершенно тот же файл и запрещает мне совершать. Когда я вручную меняю документ, svn видит разные. Черт?: >
Ответ 6
Я не думаю, что это возможно, но в первую очередь, зачем вам это нужно? Если файл не изменился, он не должен выполняться.
Если вы действительно хотите, чтобы этот файл был сгруппирован с другими файлами в фиксации, вы могли бы изменить что-то незначительное внутри (добавьте пробел, например).
Ответ 7
Причина, по которой кто-то хочет зафиксировать неизменный файл, - это непонимание того, как вернуться к предыдущей версии файла.
Например, можно вернуться к файлу index.html
в редакции 680, просто обновив его до версии в прошлом, например. 650:
svn update index.html -r 650
но это не решает проблему, потому что:
svn status -u index.html * 650 index.html Status against revision: 680
svn ясно говорит, что index.html модифицируется удаленно, и вы не можете его совершить, т.е. он "думает", что index.html устарел и должен быть обновлен до новой версии. Итак, следующий svn update
приведет index.html к версии 680.
Чтобы действительно восстановить файл, вы должны объединить его в обратном порядке:
svn merge -r 680:650 index.html
а затем зафиксируйте его svn ci -m "Reverted to r650" index.html
Ответ 8
На самом деле, я столкнулся с причиной, чтобы совершить силовую фиксацию. Это, вероятно, не самая лучшая практика, но мы помещаем Truecrypt (http://www.truecrypt.org/) тома в SVN, потому что нам нужно поддерживать жесткую защиту на какой-либо оболочке script, поскольку он содержит конфиденциальную информацию. Когда создается тома Truecrypt, его двоичные данные остаются неизменными независимо от того, что вы с ним делаете. Таким образом, я могу изменить содержимое тома, но громкость никогда не появляется.
Ответ 9
Изменение свойства не будет принудительным.
TortoiseSVN 1.4.5, сборка 10425 - 32 бит, 2007/08/26 11:14:13
Ответ 10
У меня такая же проблема с томом trueCrypt.
Я добавил новое свойство (как было предложено выше) "forceCommit1", и я смог зафиксировать файл тома. но только свойство было зафиксировано не в содержимом файла.
Я удалил файл и снова добавил его в svn
Ответ 11
Я думал, что вы можете сделать это из командной строки?
svn ci -force <filename>
У меня нет репозитория для проверки этого, поэтому я могу ошибаться.