Подтвердить что ты не робот

Как я могу заставить subversion совершить неизменный файл?

Я хочу, чтобы subversion фиксировал файл, даже если он не изменился. Есть ли способ сделать это?

4b9b3361

Ответ 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>

У меня нет репозитория для проверки этого, поэтому я могу ошибаться.