Trong khi bằng cách nào đó thông thạo trong VCS (thường xuyên svn, git và git-svn người dùng) Tôi dường như không thể quấn đầu của tôi xung quanh hành vi SVN đặc biệt này.Một cách sane để đổi tên một thư mục trong bản sao làm việc lật đổ
Bất cứ khi nào tôi cần phải đổi tên một thư mục trong bản sao làm việc SVN của tôi từ một trường hợp 'sạch' nhà nước - tức là svn status
lợi nhuận gì và tất cả các sửa đổi khác đã được cam kết - như vậy (đó là những gì các svn doc gợi ý):
svn mv foo bar
svn commit
SVN phàn nàn ầm ĩ:
Adding bar
Adding bar/toto
Deleting foo
svn: Commit failed (details follow):
svn: Item '/test/foo' is out of date
Như bạn muốn:
svn update
Mà cho:
C foo
At revision 46.
Summary of conflicts:
Tree conflicts: 1
Có một cuộc xung đột cây, trong khi không có sự thay đổi của bên thứ ba đã xảy ra. Rõ ràng, cách duy nhất để thoát ra khỏi mớ hỗn độn xung đột cây này là tổng quát (từ cuốn sách đỏ svn):
svn resolve --accept working -R .
svn commit
Đổi tên nó từ xa trên các repo sau đó cập nhật bản sao làm việc của tôi dường như khá braindead:
url=$(svn info | grep -e '^URL:' | sed 's/^URL: //') svn mv $url/foo $url/bar
svn update
Có cách nào bị xử phạt, sắp xếp hợp lý hơn để đổi tên một thư mục mà tôi bị thiếu không? Nguyên nhân gốc rễ đằng sau tình trạng xung đột cây đặc biệt đáng ngạc nhiên là gì?
Bạn có thể đăng thông điệp xung đột cây chính xác không? –
Tôi đã thấy hành vi này trước đây, nhưng tôi không chắc chắn nguyên nhân gây ra nó. Là nó khi bạn thêm một dir và đổi tên nó trước khi cam kết có lẽ? –
Tôi cũng trải nghiệm hành vi này và không thể tìm ra lý do. Tôi đã luôn viết nó lên "cách SVN hoạt động". Nó làm tôi điên. –