Subversionステータスシンボル「〜」は何を意味しますか?


110

を実行すると、波形記号が表示されますsvn status

XCodeで編集した後のプロジェクトの出力を次に示します。

svn status
M      build/Currency_Converter.build/Currency_Converter.pbxindex/imports.pbxbtree
M      build/Currency_Converter.build/Currency_Converter.pbxindex/pbxindex.header
M      build/Currency_Converter.build/Currency_Converter.pbxindex/symbols0.pbxsymbols
~      build/Currency_Converter.build/Currency_Converter.pbxindex/strings.pbxstrings
M      main.m
//more changed files

どういう意味ですか?グーグルまたはsvnチートシートのいずれかでそれを見つけることができないようです。

興味深いことに、私はmain.mのみを編集しましたが、変更されたファイルがたくさんあります。なぜだろうDunno。誰もがSVNとXCodeを操作するためのヒントを持っていますか?ソースファイルだけをバージョン管理下に置くべきですか?

編集: -すでにバージョン管理下にあったファイルが別のタイプのファイルに置き換えられたことが原因です。この場合、strings.pbxstringsは以前はファイルでしたが、現在はディレクトリになりました。ストーリーの教訓は、ビルドフォルダーをバージョン管理に入れないことです。


うーん、単に追加するのではなく、それを「修正」する方法があるかどうかはわかりません。このステータスを解決するための良い方法があるかどうかを尋ねる別の質問を投稿することもできます(現在の質問はすでに回答されているため)。
チャドバーチ

回答:


88

SVNブックは言います:

アイテムは1種類のオブジェクト(ファイル、ディレクトリ、リンク)としてバージョン管理されていますが、別の種類のオブジェクトに置き換えられています。

それで、おそらくそれはもともと単一のファイルでしたが、それをディレクトリ、またはそれらの行に沿った何かに変更しましたか?


1
あなたが正しいようです。現在は.svnファイルのないディレクトリです。それを修正する方法について何か考えはありますか?Subversionから削除して再度追加する必要がありますか?
ジャーガソン2009年

これを修正する方法を見つけた可能性はありますか?
Phill Pafford、2009

48
最善の解決策は、新しいオブジェクト(あなたの場合はディレクトリ)の名前を変更することです。衝突の原因となっているリポジトリからオブジェクトを「svn remove」して(おそらく削除したファイル)、コミットしてから、新しいオブジェクトの名前を元に戻し、リポジトリに「svn add」します。もう一度コミットします。古いオブジェクトが存在し、削除され、新しいオブジェクトが追加された一連の3つのリビジョンがあります。
Brian Lacy

8
このスレッドを読んでいる人が同じ問題を抱えている場合:これが私に起こり、「〜」ステータスの理由は、リポジトリにシンボリックリンクがあり、「sed -i」操作によって標準ファイルによって上書きされたためです。シンボリックリンクを再作成すると、「〜」が消えました。
jb

5
@JamieBullock今日も同じ理由で同じことが起こりました。私は問題が何であるかを知る前にこのコマンドを試しました:svn status | grep ^~ | grep -o [^[:space:]]\*\$ | xargs svn revertこれはすべてのシンボリックリンクを復元することができました。
Paul

34

これが私がしたことです:

フォルダーがテストの場合

  1. mvテストTest1
  2. svn削除テスト
  3. mv Test1テスト

5
削除と追加の間にコミットした限り、これでうまくいきました。1. mv Test Test1 2. svn remove Test 3. svn commit -m "Removed Test" 4. mv Test1 Test 5. svn add Test 6. svn commit -m "Added Test"
Brandon Brodjeski

1
@sancelotの答えははるかに優れています。を使用する場合は、名前を変更する必要はありませんsvn delete --keep-local fileName
DawnSong 2016

15

から

svn help status

異なる種類のアイテムによって妨害された「〜」バージョンのアイテム

私が信じているのは、ファイルのアクセス許可が変更され、svnが実行アクセス権を持っていない場合だけです。

お役に立てれば。


12

これを修正する最も簡単な方法は、バックアップしてから、このステータスのフォルダーまたはファイルを削除してから「svn up」を実行することです。必ずしもファイルによって置き換えられたフォルダーではなく、.svnフォルダーが見つからないか破損しているだけかもしれません。 。


11
svn delete --keep-local x
svn commit -m "del x"
svn add x
svn commit -m "blah"

名前を変更する必要はありません。あなたは最良の答えを出しました。
DawnSong 2016

ベストアンサー!これで問題が解決します。私の場合、それは通常のファイルとしてコミットされたソフトリンクでした。

10

これは、フォルダー内の.svnフォルダーを削除した場合(たとえば、ディレクトリを削除してから、同じディレクトリを再度作成した場合)、またはディレクトリをシンボリックリンクまたは同じ名前のファイルに置き換えた場合に発生する可能性があります。

これがa-folderと呼ばれるフォルダーであるとすると、親フォルダーで次のコマンドを発行してこれを修正できます。

$ find a-folder -type d -name '.svn' -print0 | xargs -0 rm -Rf
$ svn up --force .
svn: Directory 'logs/.svn' containing working copy admin area is missing
$ svn up --force .
E    a-folder
...
Updated to revision n.

そして、それはsvnの変更の追加/削除とコミットの問題です


3

同様の問題があり、SVNがロックについて不満を言っていました。これが私たちがしたことです:

  • ファイルをバックアップした
  • 問題のディレクトリをrm -r(linux)で削除しました
  • 蘭のSVNのクリーンアップディレクトリに
  • 蘭の--forceアップのsvnディレクトリに

3

これは、Joomla内に拡張機能をインストールするときに頻繁に発生する問題であることを共有したいと思います。拡張機能はCMSを介してインストールされ、グループ書き込みなしのapacheによって所有されます。通常、次のステップはSVNにファイルを追加することですが、sudoを行わなかったり、ファイルのパーマを変更しなかったりすると、SVNは.svnディレクトリに書き込めないときに失敗します。これが簡単な解決策です。

mv foo foo-bak
svn up foo
svn revert foo

# just for good measure. Foo should not show up in the two following commands.
ls | grep foo
svn st | grep foo

mv foo-bak foo
svn add foo

2

Windowsでのシンボリックリンクの問題かもしれません。シンボリックリンクをSVNにコミットしてからWindowsでチェックアウトすると、リンクは通常のファイルに変更され、これも〜として報告されます。


1
それで、これをどのように修正しますか?

2

Joomla!、Wordpress、Drupalなどでモジュールをアップグレードしているときに、これがよくありました。.svnディレクトリは、アップグレードプロセスによって削除されることがあります。

# rename updated directory
mv foo foo.new

# restore the old directory
svn up foo

# merge / update the old directory with new items
# notice that the above command will preserve the obsolete files
# so you should do a diff -r in order to remove them
cp -r foo.new/* foo

# Add files commit, etc
svn add foo/*
svn delete foo/xx
svn commit -m "updated module"

0
~ versioned item obstructed by some item of a different kind
    Second column: Modifications of a file's or directory's properties
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.