4

私たちはいくつかの会社のミドルウェアを持っており、時々私が探している正しいバージョンを見つけるのが難しいので、それらをテストするために異なるバージョンに更新しなければならないことがよくあります。

私は通常チェックアウトします:

svn co svn+ssh://(username)@(ip)/srv/svn/intranet/trunk/PYTHON/<application> <local-application>

その後、別のバージョンに更新する場合があります

svn update (path) -r (rev)

ほとんどの場合、数回の試行の後、これによりエラーノードが競合したままになります

フォルダを削除して新しいチェックアウトを実行しようとすると、以前の状態が復元されます。私がやりたいのはリビジョンをチェックアウトすることだけです。私は変更を加えていませんが、それでも競合があると考えています。

私はそれらを解決しようとしましたが、何も機能していないようです:

svn update -r 1586

Skipped 'inm/inm' -- Node remains in conflict
D    inm/fabfile.py
D    inm/test.db.bak
D    inm/tests
D    inm/test.db
D    inm/doc
D    inm/test.ini
D    inm/test.sql
U    inm/setup.py
A    inm/inm.egg-info
A    inm/inm.egg-info/SOURCES.txt
A    inm/inm.egg-info/top_level.txt
A    inm/inm.egg-info/PKG-INFO
A    inm/inm.egg-info/entry_points.txt
A    inm/inm.egg-info/dependency_links.txt
A    inm/inm.egg-info/not-zip-safe
A    inm/inm.egg-info/paster_plugins.txt
A    inm/inm.egg-info/requires.txt
U    inm/setup.cfg
Updated to revision 1586.
Killed by signal 15.
Summary of conflicts:
  Skipped paths: 1

svn resolved inm/inm
Resolved conflicted state of 'inm/inm'
(venv)

svn update inm/inm -r 1586
Updating 'inm/inm':
Password: 
Skipped 'inm/inm/templates' -- Node remains in conflict
At revision 1586.
Killed by signal 15.
Summary of conflicts:
  Skipped paths: 1
4

2 に答える 2

17

私がここで探していた答えは

svn revert --depth=infinity inm

私はローカルの変更を保持することを気にせず、新しいリビジョンに更新するだけです。私は今このコマンドを数回使用しました、そしてそれはトリックをするようです

編集

エラーをもう一度見ると、テストまたはビルドによって多くのファイルが変更されている可能性が高いことがわかります。それらの変更がsvnによって検出されないように、それらをignoreファイルに追加する必要がありました。

于 2012-08-08T10:24:22.393 に答える
1

それで:

  • からチェックアウトして更新するだけですかtrunk、それともブランチからチェックアウトすることもありますか?
  • テスト中にプログラムを実行しますか?
  • svn statusアップデートを実行する前に行った場合はどうなりますか?チェックアウトの手付かずのコピーはありますか?

競合は多くの理由で発生する可能性があります。

Subversionリポジトリにあるファイルを変更してから、以前のバージョンまたはそれ以降のバージョンに更新したとします。あなたがそれをどのように行うかに応じて、Subversionはあなたがしたこととあなたがチェックアウトしていることの間の変更をマージしようとするかもしれません。リビジョンの先頭から更新していない場合、Subversionが機能しないことがあります。その場合、Subversionはファイルが競合していることを報告します。

もう1つの理由は、Subversionのリビジョンにないファイルを作業ディレクトリに作成したことです。そのファイルを使用してSubversionのリビジョンを更新すると、Subversionは競合を報告します。

次に、システムに問題がある可能性があります。現在、十分な情報がありません。

次回これを行うときは、svn statusを実行する前に作業ディレクトリでを実行してくださいsvn update。実際、それは常に良い考えです。これにより、更新を行うときにSubversionとの競合の可能性が警告されます。

CVSが持っていたSubversionで私が見逃していることの1つ(そしてCVSについてはあまり見逃していません)は、コマンドを実行するふりをするオプションでした。これにより、実際の更新を行う前に、更新を行うふりをして競合を警告することができます。残念ながら、Subversionには現在そのようなオプションはありません(ただし、頻繁に要求されています)。

于 2012-08-02T14:02:22.340 に答える