SVN X はツリー競合状態のまま
-
26-09-2019 - |
質問
私は VisualSVN (Tortoise を使用) を使用しています。誤ってフォルダーを別の場所に移動してしまいました。元に戻そうとすると、SVN がこのエラーを吐きます。以前にも一度同じことが起こり、何をしているのか分からずにランダムな更新/コミットを実行したところ、「修正」されました。同じ魔法をもう一度引くことはできないので、ファイルとディレクトリを取得する方法と、ツリーの競合について知る必要があります。
ありがとう!
解決
私は同じエラー(ツリーの競合を)持っていたが、別のワークフローから。
プロセスがロックを持っているものを見つけます。 Handle.exeをダウンロードして、あなたに展開したフォルダに開きます。そして、"C:\path\handle.exe" "C:\path\FileOrFolder"
を実行します。
https://technet.microsoft.com/en-us/sysinternals/ bb896655.aspxする
ワークフロー再現してます:
- delete folder (having one of the files locked by a program that is within this folder)
- commit parent folder of folder you deleted, and look for red text of the folder you deleted (it should be brown, not red if there aren't issues in SVN)
修正するには、
- forcefully kill the lock (or close the program so it releases the lock)
- run cleanup command on folder you deleted
- revert folder you deleted
- delete folder you deleted
- commit parent folder of folder you deleted
他のヒント
現在どのような状態になっているかはわかりませんが、おそらく最善の策は次のとおりです。
- フォルダーをリポジトリから完全に移動します
- をしてください
svn cleanup
- をしてください
svn update
- フォルダーからファイルを (.svn ファイルなしで) コピーして戻し、svn 更新されたばかりの古いソース ファイルを上書きします。
http://rubyjunction.us/subversion-hell-shする
編集
ここでのLinux / Unixのユーザーに有用である可能性のリンクからシェルスクリプトだ...
#!/bin/sh
if [ "" == "$1" ] ; then
echo "Usage: subversion-hell.sh A_PROJECT"
echo "A_PROJECT should be a Subversion folder you are having problems with,"
echo "and you should be in the folder above A_PROJECT"
fi
DIR=`pwd`
PWD=$DIR
DIR=`echo $DIR | sed s/^.*\\\/trunk/trunk/`
mkdir ~/tmp/ 2>/dev/null
rm -Rf ~/tmp/$1 2>/dev/null
mv ~/$DIR/$1 ~/tmp/
find ~/tmp/$1/ -iname '.svn*' -exec rm -Rf {} \; 2>/dev/null
cd $PWD
echo svn co YOUR_URL_HERE/$DIR/$1 $1
svn co YOUR_URL_HERE/$DIR/$1 $1
cp -Rf ~/tmp/$1/* $PWD/$1/
# YOUR_URL_HERE can be found by looking in file .svn/entries, near the top
Linux環境でブランチを削除しようとしたときにも同じ問題が発生しました。私がやったことは次のとおりです。
- svn ブランチを元に戻す
- SVNアップ
- SVN クリーンアップ
- SVN削除ブランチ - 除去のためにブランチにもう一度マークします
- SVN CI
何が問題だったのか分かりませんが、2週間で2回も経験しました。
あなたが移動したことを、フォルダのバックアップを保管してください。今SVNで、解決済みTortoiseSVNの>>をクリックしてください。 ファイル/フォルダと決意を選択します。今すぐ更新/ SVNのデータをコミットします。
これは、あなたが「何もしなかった」場合にも発生する可能性があることを注意 - リポジトリにあなたの上のフォルダの周りつまり、誰かが移動して、あなたはそれについて知りません。私に起こりました。この場合は、リポジトリとsvn update
から問題のあるフォルダを削除ます。
開発者は/名前を変更/削除したファイルを移動するとき、Aツリーの競合が発生します またはフォルダ、その別の開発者がどちらかも持っています 移動/名前を変更/削除、または単に修正。多くの異なるがあります。 ツリーの競合が発生することができます状況、およびそれらのすべてが必要です 競合を解決するために、異なる手順ます。