60

ファイルが変更されていなくても、Subversion にファイルをコミットさせたい。これを行う方法はありますか?

4

12 に答える 12

69

ファイルの内容を変更しない場合 (つまり、johnstok が提案したように単に空白を変更することはできません) は、ファイルのプロパティの 1 つをいつでも変更できます。

例えば。

svn propset dummyproperty 1 yourfile
svn commit yourfile

これにより、ファイルを変更せずにコミットが実行されます。

特別なsvn:プロパティのいずれかを使用しないようにしてください。それ以外は問題ないはずです。


編集:他の多くの投稿者が、なぜ誰かがこれをやりたいのかを尋ねました-おそらく、この回答を下に置いた人々も同じ懸念を持っていました.

元のポスターについて話すことはできませんが、これが使用されているシナリオの 1 つは、Visual Sourcesafe リポジトリのアクティビティを Subversion リポジトリと自動的に同期しようとする場合です。

于 2008-10-15T23:04:17.890 に答える
6

なぜ強制コミットをしたいのか答えてください。誰かが間違った、または不明確なコミット メッセージを使用したケースを見てきました。この間違いを修正できる強制コミットを実行できると便利です。そうすれば、更新されたコミット メッセージがリポジトリに移動するため、失われることはありません。

于 2010-01-18T13:36:14.070 に答える
4

問題のあるファイルを削除してから再度追加することで、これを回避しました。それを行う最も良い方法ではなく、おそらく改訂履歴を壊してしまいましたが、私の目的には合っていました。

実行したい理由: ファイルは、同じソース (異なる #defines セット) からビルドされた 2 つの実行可能ファイルの 1 つでした。ソースへの小さな変更は、一方が変更され、一方が変更されなかったことを意味します。実際に最新バージョンに更新したことを改訂履歴に記録したかったのです(変更はありませんでしたが)。

おそらく、Morten Holdflod Møller の「ファイルは新しいリビジョンの一部である」という指摘は、この兆候をカバーするでしょうが、変更されていないファイルのログには、そのリビジョンのコメントが表示されなかったと思います。

于 2008-12-21T13:02:14.220 に答える
2

テキスト ファイルの場合は、改行などの空白を追加するだけです。

于 2008-10-15T20:10:35.400 に答える
2

これは可能であると疑問に思う人もいます: 何らかの理由で svn は doc ファイル間の違いを認識しないので、強制的にコミットしたいと思います!

ドキュメントを静的ディレクトリから svn に移動しています。ファイルは UG_v1.2、UG_v1.3 などです。履歴を保持するためだけに、1.2 を取得し、ファイル名からバージョンを削除して、svn に追加してコミットします。次に、2番目のものからバージョンを取得し、最初のものにコピーして、それと新しいバージョンをコミットしたいと考えています。ファイルのサイズと作成日は変更されますが (ドキュメントの内容は言及されていません)、svn は完全に同じファイルであると主張し、コミットを許可しません。ドキュメントを手動で変更すると、svn は異なるものを認識します。一体?:>

于 2010-03-04T13:27:20.320 に答える
0

誰かが変更されていないファイルをコミットしたいのは、以前のバージョンのファイルに戻す方法を誤解しているからです。

たとえば、過去のリビジョン、たとえば650index.htmlに更新するだけで、ファイルをリビジョン680に戻すことができます。

svn update index.html -r 650

しかし、次の理由により、問題は解決しません。

svn ステータス -u index.html
        * 650 index.html
改訂に対するステータス: 680

svn は、index.html がリモートで変更されており、コミットできないことを明確に示しています。つまり、index.html は古く、新しいリビジョンに更新する必要があると「考え」ます。したがって、次は index.html をリビジョン680svn updateに戻します。

ファイルを実際に元に戻すには、逆の順序でマージする必要があります。

svn merge -r 680:650 index.html

そしてそれをコミットしますsvn ci -m "Reverted to r650" index.html

于 2010-12-02T12:03:31.963 に答える
0

私はそれが可能だとは思いませんが、まず第一に、なぜそれを行う必要があるのですか? ファイルが変更されていない場合は、コミットしないでください。

コミットでそのファイルを他のファイルとグループ化することが本当に必要な場合は、内部の小さなものを変更できます(たとえば、スペースを追加します)。

于 2008-10-15T20:06:39.420 に答える
-1

trueCryptボリュームでも同じ問題があります。

(上記のように)新しいプロパティ "forceCommit1"を追加すると、ボリュームファイルをコミットできました。ただし、ファイルの内容ではなく、プロパティのみがコミットされました。

ファイルを削除して、svnに再度追加しました

于 2009-06-25T16:07:44.927 に答える
-1

実際、私は強制コミットを行う理由に出くわしました。これはおそらくベストプラクティスではありませんが、機密情報が含まれているシェルスクリプトのセキュリティを厳しくする必要があるため、 Truecrypt( http://www.truecrypt.org/ )ボリュームをSVNに配置します。Truecryptボリュームが作成されると、そのバイナリデータは、それをどのように使用しても同じままです。したがって、実際には、ボリュームの内容を変更することはできますが、ボリュームが変更されたように見えることはありません。

于 2009-05-01T22:33:43.900 に答える
-1

プロパティを変更してもコミットは強制されません。

TortoiseSVN 1.4.5、ビルド 10425 - 32 ビット、2007/08/26 11:14:13

于 2009-05-01T22:38:47.117 に答える
-2

コマンドラインからできると思いましたか?

svn ci -force <filename>

私はここにそれをチェックするためのリポジトリを持っていないので、私は間違っているかもしれません。

于 2008-10-31T10:31:18.660 に答える