2010-04-13 14 views
24

Tôi đang sử dụng VisualSVN (sử dụng Rùa). Tôi vô tình di chuyển một thư mục đến một vị trí khác. Khi cố gắng di chuyển nó trở lại, SVN pukes với lỗi này. Nó đã xảy ra một lần trước và tôi quản lý để làm một số cập nhật ngẫu nhiên/cam kết, không biết những gì tôi đã làm và nó đã được "cố định". Tôi không thể rút phép thuật tương tự một lần nữa, vì vậy tôi cần phải biết làm thế nào để có được các tập tin và thư mục của tôi và xung đột cây.SVN X vẫn còn trong xung đột cây

Cảm ơn!

+1

Xem thêm http://stackoverflow.com/questions/2406469/svn-remains-in-conflict (không có câu trả lời nào trên trang này làm việc cho tôi) –

Trả lời

15

tôi đã có lỗi tương tự (xung đột cây), nhưng từ một quy trình làm việc khác.

Tìm quy trình nào có khóa. Tải xuống Handle.exe và mở thư mục bạn đã trích xuất. Sau đó, chạy "C:\path\handle.exe" "C:\path\FileOrFolder".

https://technet.microsoft.com/en-us/sysinternals/bb896655.aspx

Workflow để tái sản xuất:

- 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) 

Để khắc phục:

- 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 
+1

Đây là câu trả lời hay nhất. – robomc

16

Tôi không chắc chắn những gì nhà nước nó trong lúc này, nhưng đặt cược tốt nhất của bạn có lẽ sẽ đến:

  1. Move thư mục ra khỏi kho lưu trữ của bạn hoàn toàn
  2. Do một svn cleanup
  3. Do một svn update
  4. Sao chép các tệp từ thư mục trở lại (không có tệp .svn) ghi đè lên các tệp nguồn cũ chỉ được cập nhật svn.
+1

Không phù hợp với tôi.Tôi nhận được "svn: Không thể khóa đường dẫn/đến/thư mục/I/chỉ/di chuyển/trở lại" khi cố gắng cam kết sau đó. – aioobe

+1

Không giải quyết nó cho tôi – Tjorriemorrie

2

http://rubyjunction.us/subversion-hell-sh

Sửa

Đây là shell script từ liên kết, có thể hữu ích cho người dùng 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 
+1

Ehm ... sẽ không xóa thư mục chính của bạn nếu "thư mục có vấn đề" là ".." ?! (nó sẽ bỏ qua các thông tin sử dụng trong kịch bản của khóa học, nhưng vẫn còn một chút nguy hiểm) –

+1

Một điều nữa, "cp" ở cuối sẽ không sao chép bất kỳ tệp hoặc thư mục được sửa đổi nào bắt đầu bằng dấu "." (khoảng thời gian) trở lại những gì đã được cập nhật từ SVN. –

+0

Tôi đã sao chép và sau đó xóa các thư mục khỏi hệ thống tệp svn và tệp cục bộ. Sau đó trên cửa sổ tôi cần thiết để làm cho các thư mục ẩn có thể nhìn thấy. Sau đó, tôi đã xóa tất cả các thư mục với .svn trong các thư mục mà tôi muốn cập nhật. sau đó tôi cam kết các thư mục. và điều đó đã làm việc – Leoa

1

tôi đã cùng một vấn đề khi cố gắng xóa một chi nhánh trên môi trường Linux. Những gì tôi đã làm là:

  1. svn trở lại chi nhánh
  2. svn lên
  3. svn dọn dẹp
  4. svn remove chi nhánh - đánh dấu chi nhánh một lần nữa để loại bỏ
  5. svn ci

tôi không biết vấn đề là gì nhưng tôi đã trải nghiệm nó hai lần trong hai tuần.

0

Giữ bản sao lưu của thư mục mà bạn đã di chuyển. Bây giờ trong SVN, bấm vào TortoiseSVN >> Giải quyết. Chọn tệp/thư mục và giải quyết. Bây giờ cập nhật/cam kết dữ liệu svn.