SVNの「古い」エラーをどのように克服しますか?


336

Subversionでディレクトリ構造をある場所から別の場所に移動しようとしましたが、Item '*' is out of dateコミットエラーが発生します。

最新バージョンをチェックアウトしました(私が知る限り)。svn st -umvコマンド以外の違いはありません。


11
あなたはsvnを試しましたか?
Sklivvz 2008

3
些細な問題は、フォルダとコンテンツを削除する場合は、まずコンテンツのみを削除し、次にsvn、次にフォルダを削除してから、もう一度svnを実行します。
Fattie 2014年

回答:


636

WindowsでTortoiseSVNを使用してこれを取得することがあります。私にとっての解決策はsvn update、ダウンロードまたは更新するリビジョンがない場合でも、ディレクトリです。メタデータに対して何かを行い、魔法のように修正します。


4
フォルダーのsvn:ignoreプロパティを変更し、古いエラーが発生し始めました。しかし、あなたが言ったように、それを更新するだけでうまくいきました。
Sushant 2009年

4
そのディレクトリを更新しようとすると、「svn:ターゲットのない2つのトップレベルレポート」が表示されます。SVNを嫌うもう1つの理由です。gitでは、ディレクトリの移動などの基本的な操作でこの種の愚かな問題が発生することはありませんでした。
Dan Dascalescu

バージョンGUIを使用して、親フォルダーで「古い」エラーが発生しました。親フォルダーを更新し、エラーなしでコミットしました。
milesmeow

1
これは、svn:ignoreを変更したためにも発生し、svn updateで修正されました。ありがとう!
Nathan Schwermann、2011年

8
Subclipseでは、「Team-> Update to HEAD」を使用します。私と一緒にうまくいきます。
NeoRamza 2014年

42

すべての明らかなこと、およびここでの他のいくつかの提案を試した後、まったく運がなかったため、Google検索がこのリンクにつながりました(リンクはもう機能していません)-Subversionによると:ファイルまたはディレクトリがおそらく古くなっています

簡単に言えば、トリックは.svnディレクトリ(問題のファイルが含まれているディレクトリ内)に移動し、「all-wcprops」ファイル削除することです

他に何もしなかったときに私のために働いた。


やった!ありがとう!これがどのように発生し、そもそもそれを回避する方法について誰かが何か提案がありますか?
Jesse Barnum 2013年

私のために働いた。私はすべての 'all-wcprops'ファイルを削除する必要がありました:find。-name all-wcprops -exec rm -rf {} \;
Peter Hough、

構造内のファイルを削除せずに、svnツールとオプションでこれを解決できるはずだと思います
augusto

+1、これは私のために働いた唯一のものです。他の解決策はしませんでした。
クレイトンデュークス

9
AINT私のために働いて、何も存在しないall-wcprops内のファイル.svのディレクトリは
ulkas

39

この問題は.svnファイルに起因していると思います。古い親、新しい親、古い親のいずれかが間違っています。元の状態に戻してみます。エクスポートを使用して、フォルダーのクリーンなコピーを取得します。クリーンコピーを新しい場所に移動し、追加と削除を使用して移動します。これはSVNが行うことを手動で行っていますが、機能する場合があります。


4
Subversionは実際にコピーしてから削除します。これは、そこに削除してここに追加するのとはかなり異なります。
SnakE 2011

37

これは私にとってはうまくいくことがわかりました:

svn update
svn resolved <dir>
svn commit

これまでにせずに私のために働いたsvn update、私は更新を避けたいシナリオがありました。(だから私は解決してコミットしただけでうまく
いき

これは私の状況の治療法であり、他には何もうまくいきませんでした。ありがとう!
texasdave

14

ローカルコピーを更新し、問題のアイテムを元に戻そうとしましたが、まだ「古い」エラーが発生しました。これは何らかの理由で機能しました:

svn update --force /path/to/dir/or/file

11

私はいくつかのフォルダで同じ問題を抱えていましたが、これは私がコミットするためにやったことです:

1)「Team Synchronize」パースペクティブで、フォルダーを右クリックし、「上書きして更新」
2)フォルダーを再度削除
3)コミットして、幸せになる


5

ありがとうございました。それで解決しました。svn update --force / path to filename /

ローカルディレクトリの最近のファイルが同じ場合、プロンプトは表示されません。ファイルが異なる場合は、tf、mfなどのプロンプトが表示されます。mf(mine full)を選択すると、何も上書きされず、完了時にコミットできるようになります。

ジェイ・コンピュマター



4

@ Alexander-Klyubinが示唆するように、リポジトリ内で移動してください。また、特に移動するデータが大量にある場合は、ネットワーク経由ですべてのデータを転送する必要がないため、処理速度が大幅に向上します。

svn mv https://username@server/svn/old/ https://username@server/svn/new/

うまく機能するはずです


私はsvn up; svn mvコマンドシリーズでこの問題を抱えていましたが、これはうまく機能しました。ありがとうございました。
DopeGhoti

3

コマンドを実行する前に使用するファイルまたはパスを削除して、変更のbkを実行します

sudo rm -r /path/to/dir/

後:

svn up and commit or delete 

2

下位リビジョンではなく、ヘッドをチェックアウトしましたか?また、最新バージョンを確実に入手するために更新を行っていますか?

これについての議論があります http://svn.haxx.se/users/archive-2007-01/0170.shtml


古いコピーをチェックインしたいとしますか?次に、チェックインを機能させる最も簡単な方法は何ですか?
OJW 2011年

古いコピーに戻す場合は、通常どおりにチェックインしてください。新しいリビジョン番号を取得します。
jgreep '07 / 07/14


2

「期限切れ」というエラーメッセージの原因は他にも少なくとも1つあります。私の場合、問題は「svn propset svn:ignore -F .gitignore」を実行して作成された.svn / dir-propsでした。初めて。.svn / dir-propsを削除することは悪い考えのようであり、他のエラーを引き起こす可能性があるため、「svn propdel」を使用して誤った「svn propset」をクリーンアップするのが最善の場合があります。

# Normal state, works fine.
> svn commit -m"bump"  
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 509.

# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'

# Edit a file. Should have committed before the edit.
> svn commit -m"bump"                   
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

# Delete the property.
> svn propdel svn:ignore .              
property 'svn:ignore' deleted from '.'.

# Now the commit works fine.
> svn commit -m"bump"     
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 510.

2

github svnブリッジを使用している場合は、github側で何かが変更された可能性があります。解決策は簡単です。実行するだけsvn switchで適切に検出され、更新すればすべてが機能します。チェックアウトのルートから以下を実行するだけです

svn info | grep Relative 
svn switch path_from_previous_command
svn update

または

svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

このソリューションの基礎は、Lee Preimesbergerのブログにあります


1

を使用して移動していますかsvn mv、それとも単にmvですか?ちょうど使用mvすると、この問題が発生する可能性があると思います。


1

安全のためにdirをローカルマシンに移動し、svnが愚かなディレクトリを削除してコミットしました。ローカルマシンからフォルダを追加しようとしたときに、エラーが発生しました(SVN移動は、フォルダの名前を変更しようとしたときに同じことを行いました)。それで私は元に戻し、それからmkdir DIRNAMEを行い、追加してコミットしました。次に、コンテンツを追加してコミットしましたが、うまくいきました。


1
私のローカルチェックアウトが何らかの理由で破損しているため、リポジトリの内容を変更(svn delete)することは避けます。
Lars Noschinski、

1

それぞれいくつかのファイルを含むいくつかのディレクトリを削除した後、私はランダムにこのエラーを受け取りました。Netbeansを使用してディレクトリを削除したところ、実際には削除されないことに気付きました。ディレクトリ内のすべてを削除し、Netbeans内のディレクトリへの参照を削除したようです。それらはまだファイルシステムに存在していました。それらがファイルシステムから削除されていることを確認し、コミットを再試行してください。


1

一度新しい作業コピーをチェックアウトして.svnディレクトリを置き換えることで同様の問題を解決した場合、コミットエラーをスローする.svnディレクトリをこの新しくチェックアウトしたものに置き換えます。私の場合の理由は、リポジトリが破損してバックアップから復元された後、作業コピーが復元されたリポジトリに存在しないリビジョンを指しているためです。「アイテムが古い」というエラーも発生しました。コミット前に作業コピーを更新しても問題は解決しませんでしたが、上記のように.svnを置き換えると解決しました。


1

私はこれを行い、それは私のために働きました:
1.あなたのファイルのバックアップを取ってください。コードをテキストファイルにコピーするだけです。
2.コミットするファイルを右クリック>>チーム>>履歴を表示します。3. [履歴の表示]パネルに、そのファイルのすべてのリビジョンが表示されます。ファイルの最新リビジョンを右クリック>>リビジョンを取得:ローカルの変更を上書きします。
4.次に、コードを最新のファイルとバックアップファイルにマージします(ステップ#1)。
5.新しくマージされたファイルを同期してコミットします。


1

サーバーとクライアントをSubversion 1.9にアップグレードします。

out of date通常は発生しないはずのエラーがランダムに発生する場合、コミットを実行すると、サポートされていない古いSubversion 1.7以前のクライアントまたはサーバーを使用している可能性があります。

この問題を解決するには、サーバーとクライアントをアップグレードする必要があります。関連するSubversion 1.9リリースノートのエントリを参照してください:HTTPv1を介してコミットする際の「期限切れ」エラー


1
これは、WindowsのTortoiseSVN 1.8.8でも起こりました。1.9に更新すると役立ちました。
Martin Pecka 2016

1

エラーは、特定のファイルを更新していないためです。最初に更新してから、ファイルをコミットできるのはあなただけです。


1

.svnの変更を除くすべてを直接試みました。何も役に立たなかったので、これが私の解決策です。

Eclipse>ウィンドウ>ビューの表示> 履歴で、ファイルが最新のリビジョンではないことを確認しましたが、複数のsvn "Override&Update" / "Revert" / delete fileとcheckoutを作成しました。

だから私はパッケージエクスプローラー>ファイルを右クリック> 置換>リポジトリから最新に行きました。

履歴ビューをもう一度見ると、ファイルが最新のリビジョンにあることがわかりました。


1

「クリーンアップ」順調に進みます。

svnフォルダーを右クリックして[クリーンアップ]をクリックします。そのエラーが発生した場合は、これを実行します。


0

これは、以前のリリースのブランチをトランクのファイルで更新したときに発生しました。Windowsエクスプローラーを使用して、トランクのチェックアウトフォルダーからフォルダーをコピーし、リリースブランチのチェックアウトフォルダーのEclipseビューに貼り付けました。現在、Windowsエクスプローラーは、「。」で始まる「非表示」ファイルを表示しないように構成されているため、リリースブランチのチェックアウトフォルダーに貼り付けられているすべての不正な.svnファイルに気づいていませんでした。どー!

私の解決策は、破損したEclipseプロジェクトを吹き飛ばし、再度チェックアウトして、新しいファイルをより注意深くコピーすることでした。「隠し」ファイルを表示するようにWindowsを変更しました。


0

一部のファイルをコミットしようとしたときにこのエラーが発生しました。作業コピーに存在しないファイルまたはフォルダーのみでした。私は本当に、ファイルを移動して再チェックアウトするという面倒な作業をやりたくありませんでした。結局、.svn / entriesファイルを編集して、問題のディレクトリ参照を削除しました。


0

私の場合、ローカルバージョンの削除と新しいコピーの再チェックアウトのみが解決策でした。


0

このエラーが発生しました。私がお勧めするのは、元のファイルが存在するかどうかを最初にサーバーで確認することです。ときどき変更がローカルフォルダに加えられません。これがあなたの状況である場合は、フォルダを削除して、もう一度チェックアウトしてください。


0

解決するには、問題のあるファイルを元に戻して作業コピーを更新する必要があり、後でファイルを再度変更したところ、これらの手順を実行してもエラーは発生しなくなりました。


0

コマンドラインでsvn upを実行するか、Windowsの場合はsvn updateオプションを選択します。

  • これが完了すると、コミットなどのアクションを実行できるようになります。

0

ディレクトリcommitから取得しようとしたときに取得しましたtrunk。やってsvn updateからtrunkディレクトリとするとエラーが解決しませんでした。ただし、svn update親ディレクトリ(.svnディレクトリが属する場所)から実行すると、エラーは解決しました。

何が起こったかについての私の推測(とりわけユースケース、これには「svn:E160024:リソースが古くなっています。更新してみてください」):に沿ってtrunkbranchesディレクトリがありました。GitHubからをプルしbranches/branch-1ましmasterた。のsvn update代わりに親ディレクトリ(つまり、私の作業コピーのルート)trunkから実行するとbranches、何かに加えて何かが行われたようtrunkです。commit再試行してもエラーはありませんでした。

ただし、前述したように、これはおそらく他の多くのケースの1つです。

補足:誰かが提案したものとは異なり、手動で.svnディレクトリを再生することはお勧めしません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.