Subversionに未変更のファイルをコミットさせるにはどうすればよいですか?
-
03-07-2019 - |
質問
subversionにファイルが変更されていなくてもコミットするようにしたい。これを行う方法はありますか?
解決
ファイルの内容を変更しないままにする場合(johnstokが示唆したように単に空白を変更することはできないことを意味します)、ファイルのプロパティの1つをいつでも変更できます。
eg。
svn propset dummyproperty 1 yourfile svn commit yourfile
ファイルを変更せずにコミットを実行します。
特別な svn:
プロパティの1つを使用しないでください。それ以外は大丈夫です。
編集: 他の多くのポスターが、なぜ誰かがこれをしたいのかと尋ねました-おそらく、この答えを書き留めた人々も同じ懸念を持っていたでしょう。
元のポスターについて話すことはできませんが、これが使用されているのを見たシナリオの1つは、Visual Sourcesafeリポジトリ上のアクティビティをSubversionリポジトリと自動的に同期しようとする場合です。
他のヒント
強制コミットをしたい理由に答える場合。誰かが間違っているか不明瞭なコミットメッセージを使用した場合を見てきました。この間違いを修正できる強制コミットを実行できると便利です。こうすると、更新されたコミットメッセージがリポジトリに送られるため、失われません。
問題のあるファイルを削除してから再度追加することで、これを回避しました。それを行うのに最適な方法ではなく、おそらく改訂履歴を壊しましたが、それは私の目的に合いました。
実行したい理由:ファイルは、同じソースから(異なる#definesセットを使用して)ビルドされた2つの実行可能ファイルの1つでした。ソースへのわずかな変更は、変更されたが、変更されなかったことを意味します。変更がなかったとしても、実際に最新バージョンに更新したことを改訂履歴に記録したかったのです。
Maybe Morten Holdflod Mø llerは、「ファイルはまだ新しいリビジョンの一部である」と述べています。この表示をカバーしますが、変更されていないファイルのログにはそのリビジョンのコメントは表示されなかったと思います。
テキストファイルの場合は、改行などの空白を追加します。
これに疑問を呈する一部の人々に答えることは可能です:何らかの理由でsvnはdocファイルの違いを認識しないので、同様に強制的にコミットしたいと思います!
現在、ドキュメントを静的ディレクトリからsvnに移動しています。ファイルはUG_v1.2、UG_v1.3などです。 履歴を保持するために、1.2を取得し、ファイル名からバージョンを削除して、svnに追加してコミットします。 次に、2番目のバージョンからverを取得し、最初のバージョンにコピーして、新しいバージョンをコミットします。ファイルサイズと作成日は変更されますが(ドキュメント内の内容は言及しません)、svnは完全に同じファイルであると主張し、コミットすることを許可しません。 ドキュメントを手動で変更すると、svnが別のものを認識します。 一体? :>
それは可能だとは思いませんが、まずそれをする必要があるのはなぜですか?ファイルが変更されていない場合、コミットしないでください。
そのファイルをコミットで他のファイルとグループ化したい場合は、内部の小さなものを変更できます(たとえばスペースを追加します)。
変更されていないファイルをコミットしたい理由は、ファイルの以前のバージョンに戻す方法の誤解です。
たとえば、リビジョン 680 のファイル index.html
を、過去のリビジョンに更新するだけで元に戻すことができます。 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&quot ;; index.html
実際、私は強制コミットを行う理由に出会いました。これはおそらくベストプラクティスではありませんが、Truecrypt( http://www.truecrypt.org/ )を配置します。 SVNのボリューム。これには、機密情報が含まれているため、一部のシェルスクリプトのセキュリティを厳重に保つ必要があるためです。 Truecryptボリュームが作成されると、そのバイナリデータは何を使用しても同じままです。したがって、実際には、ボリュームの内容を変更できますが、ボリュームが変更されているようには見えません。
プロパティを変更しても、コミットは強制されません。
TortoiseSVN 1.4.5、ビルド10425-32ビット、2007/08/26 11:14:13
trueCryptボリュームにも同じ問題があります。
新しいプロパティを追加しました(上記のとおり)" forceCommit1"そして、彼らは私がボリュームファイルをコミットすることができました。ただし、ファイルの内容ではなくプロパティのみがコミットされました。
ファイルを削除して、svnに再度追加しました
コマンドラインから実行できると思っていましたか?
svn ci -force <filename>
チェックするためのリポジトリがここにないので、間違っている可能性があります。