ファイルが変更されていなくても、Subversionにファイルをコミットさせます。これを行う方法はありますか?
ファイルの内容を変更しないままにする場合(johnstokが示唆したように空白を変更することはできないことを意味する)、ファイルのプロパティの1つをいつでも変更できます。
例えば。
svn propset dummyproperty 1 yourfile svn commit yourfile
これにより、ファイルを変更せずにコミットが実行されます。
特別なsvn:
プロパティ。それ以外は大丈夫です。
編集:他の多くのポスターが、なぜ誰かがこれをしたいのかと尋ねました-おそらく、この答えを書き留めた人々も同じ懸念を持っていたでしょう。
私は元のポスターについて話すことはできませんが、これが使用されているのを見たシナリオの1つは、Visual Sourcesafeリポジトリ上のアクティビティをSubversionリポジトリと自動的に同期しようとするときです。
なぜ強制コミットをしたいのかという答えについて。誰かが間違っているか不明瞭なコミットメッセージを使用した場合を見てきました。この間違いを修正できる強制コミットを実行できると便利です。こうすると、更新されたコミットメッセージがリポジトリに送られるため、失われません。
問題のあるファイルを削除してから再度追加することで、これを冷やしました。それを行うのに最適な方法ではなく、おそらく改訂履歴を壊しましたが、それは私の目的に合っていました。
やりたい理由:ファイルは、同じソースから(異なる#definesセットで)ビルドされた2つの実行可能ファイルの1つでした。ソースへのわずかな変更は、変更されたが、変更されなかったことを意味します。改訂履歴に、実際に最新バージョンに更新したことを記録したかった(変更はありませんでしたが)。
おそらく、Morten HoldflodMøllerの「ファイルは新しいリビジョンの一部である」という点がこの兆候をカバーするでしょうが、変更されていないファイルのログにはそのリビジョンのコメントは表示されなかったと思います。
これに疑問を呈する一部の人々に答えることは可能です。何らかの理由でsvnはdocファイルの違いを認識しないので、同様に強制的にコミットしたいと思います!
現在、ドキュメントを静的ディレクトリからsvnに移動しています。ファイルはUG_v1.2、UG_v1.3などのようなものです。したがって、履歴を保持するために、1.2を取得し、ファイル名からバージョンを削除して、svnに追加してコミットします。次に、2番目のバージョンからverを取得し、最初のバージョンにコピーして、新しいバージョンをコミットします。ファイルサイズと作成日は変更されますが(ドキュメント内の内容は言及しません)、svnは完全に同じファイルであると主張し、コミットすることを許可しません。ドキュメントを手動で変更すると、svnが別のものを認識します。一体? :>
テキストファイルの場合は、改行などの空白を追加します。
私はそれが可能だとは思いませんが、まず第一にそれをする必要があるのはなぜですか?ファイルが変更されていない場合、コミットしないでください。
コミットでそのファイルを本当に他のファイルとグループ化したい場合は、内部の小さなものを変更できます(たとえば、スペースを追加します)。
誰かが未変更のファイルをコミットしたい理由は、ファイルの以前のバージョンに戻す方法の誤解です。
たとえば、ファイルを元に戻すindex.html
リビジョン68過去のリビジョンに更新するだけで、例えば65:
svn update index.html -r 650
しかし、それは問題を解決しません:
svn status -u index.html * 650 index.html リビジョンに対するステータス:680
svnは、index.htmlがリモートで変更されていることを明確に述べており、それをコミットすることはできません。新しいリビジョンに更新されました。だから次のsvn update
はindex.htmlをリビジョンに戻します68。
実際にファイルを元に戻すには、逆の順序でマージする必要があります。
svn merge -r 680:650 index.html
そして、それをコミットしますsvn ci -m "Reverted to r650" index.html