Trạng thái “S” trong Subversion


80

Tại một số điểm, tất cả các tệp trong bản sao làm việc của tôi được đánh dấu bằng ký hiệu "S" như hình dưới đây:

$ svn st
M    S   AclController.php
     S   InstallationController.php
     S   CustomerController.php
     S   RedirController.php
     S   IndexController.php
     S   LoginController.php
     S   OrderController.php
     S   ProductController.php
     S   SelfInstallController.php
     S   SelfcareController.php

Điều thú vị là nó chỉ xảy ra trong bản sao làm việc cụ thể này - khi tôi kiểm tra dự án sang thư mục mới, nó không hiển thị dấu "S".

Làm thế nào để loại bỏ ký hiệu "S" khó chịu này? Nó làm giảm đáng kể tình trạng WC.

Cập nhật: Tôi thường chuyển đổi bằng svn switchcú pháp chuẩn . Nó không bao giờ gây ra biểu tượng "S" này xuất hiện cho đến gần đây. Lệnh được sử dụng để chuyển đổi là:

svn switch svn+ssh://xxxxxx/subversion/xxxxxxx/releases/1.0.16 .

Có cách nào tôi có thể xóa cờ "S" không?


7
Trạng thái S có nghĩa là "đã chuyển đổi", theo svn h st. Điều đó có nghĩa là gì, tuy nhiên…
me_và

1
@me_and: Chuyển đổi các bản sao đang hoạt động: svnbook.red-bean.com/en/1.0/ch04s05.html
Chris J

1
Chỉ đối với bản ghi - vì đó là vấn đề gần nhất mà tôi đã tìm thấy trực tuyến -, chúng tôi đã gặp sự cố cờ S khi cố gắng hợp nhất một nhánh vào thân cây. Nó liên quan đến thực tế là chúng tôi đang sử dụng các thiết bị bên ngoài. Chúng đã bị loại bỏ trên nhánh nhưng thân cây vẫn tiếp tục tham chiếu chúng, do đó không hợp nhất. Giải pháp là loại bỏ các yếu tố bên ngoài mà chúng tôi đã loại bỏ trên nhánh trong thân cây, cam kết thân cây và tái hòa nhập một lần nữa. Hy vọng rằng sẽ giúp một ai đó trên đường đi :) Cheers!
Darío Javier Cravero

Câu trả lời:


76

Nó có nghĩa là các tệp đến từ một vị trí khác trong kho lưu trữ subversion của bạn với thư mục chứa chúng. Giải pháp là chuyển toàn bộ bản sao đang làm việc sang cùng một vị trí. Xem hai phần trong sách lật đổ để biết chi tiết về cách gọi lệnh.


35
Tôi đã thấy điều này xảy ra khi lệnh "svn switch" bị gián đoạn bởi một số loại xung đột, chẳng hạn như nhánh bạn đang chuyển sang có phiên bản kho lưu trữ của tệp cục bộ không được cam kết. Nhảy ra khỏi svn để khắc phục điều đó khiến bản sao làm việc tổng thể được chuyển sang một cách hoàn toàn. Giải quyết vấn đề và sau đó thực hiện lại lệnh chuyển đổi phù hợp với tôi.
Michael H.

4
Tôi đã gặp lỗi này sau một lỗi - E210002: Kết nối mạng bị đóng đột ngột. Thực hiện lại lệnh chuyển đổi dường như đã khắc phục được sự cố và trạng thái "S" đã biến mất.
Kevin Sadler

1
Gián đoạn trong quá trình chuyển mạch svn IS gây ra điều này. Hãy nhận biết.
SandorRacz

2
Kevin Sadler thực sự cung cấp giải pháp chứ không chỉ mô tả vấn đề. +1
ahnbizcad

11

Nếu bạn gọi 'svn info' trên chính thư mục và trên (một trong số) các tệp bên trong, bạn sẽ nhận được hai URL khác nhau.

Bạn nhận được trạng thái 'S' nếu url của tệp / thư mục không khớp với URL của tệp gốc, theo sau là tên của tệp.

Bạn có thể đăng url của nút cha và một trong những nút con không? (ẩn danh URL nếu thích hợp)


Mặc dù không phải là một câu trả lời, nhưng 'câu trả lời' này rất hữu ích để đưa ra một số manh mối về những gì đang xảy ra.
FlipMcF

đây không phải là một câu trả lời.
ahnbizcad

8

Tôi đã có trạng thái ' S ' khi chuyển từ đường trục (r100) sang một số chi nhánh (r50). Tôi gặp lỗi:

svn: Failed to add file 'web/.htaccess': an unversioned file of the same name already exists

Tất cả các mã con của web / đều được gắn cờ ' S '.

Nguyên nhân: tôi đã xóa .htaccess thành svn: ignore it (r100), sau đó đã tạo lại nó (chưa phiên bản và bị bỏ qua). Chi nhánh (r50) vẫn có web / .htaccess trong repo.

Giải pháp :

mv web/.htaccess ../../
svn switch back to trunk
svn switch to branch again

Mọi thứ đều ổn.


Tôi đã gặp lỗi tương tự, nhưng tôi đã xóa phiên bản vi phạm của mình "web / .htaccess" (vì đối với tôi đó là một số thư mục) và đã cập nhật svn, sau đó chuyển từ trung kế sang một thẻ cụ thể trở lại trung kế (thẻ cụ thể thực sự là một bản sao của thân cây ...) và các lá cờ 'S' sai lầm đã biến mất.
Kasapo

6

Tôi đã gặp sự cố này với một thư mục mà tôi đã cam kết thành công với SVN. Giải pháp cho tôi là xóa nó cục bộ sau đó cập nhật. Tôi không thể thấy bất kỳ sự khác biệt nào, nhưng tệp .svn đã được sửa vì bất kỳ lý do gì (không còn S).


Tôi đã có điều này xảy ra trong một bên ngoài svn sau khi cập nhật lên một nhánh mới hơn. Xóa toàn bộ bên ngoài theo cách thủ công sau đó chạy cập nhật svn đã khắc phục sự cố. +1!
Stephen Fuhry

5

Điều này thường gây ra bởi sự gián đoạn khi chuyển đổi các nhánh.

Chuyển sang một nhánh khác, rồi chuyển lại nhánh bạn thực sự muốn.

svn switch some_other_branch_url

svn switch desired_branch_url


4

Chỉ cần lưu ý: Tôi nhận được cùng một ký hiệu S khi tôi kiểm tra một thư mục đã xóa từ cùng một vị trí trong kho lưu trữ nhưng sử dụng một URL khác , tức là sử dụng các giao thức khác nhau để kiểm tra như 'svn checkout svn + ssh: // user @ scm .gforge ... 'chống lại' svn checkout - username user https: //scm.gforge .... '. Tôi đã giải quyết nó bằng cách kiểm tra lại bằng cách sử dụng cùng một URL mà tôi đã sử dụng cho lần thanh toán đầu tiên.


Kiểm tra lại với cùng một URI đã giải quyết được vấn đề này. Cảm ơn bạn.
sepehr

4

Trong trường hợp bất kỳ ai đến muộn để tìm kiếm câu trả lời (được nêu chính xác ở trên), tôi tin rằng NGUYÊN NHÂN có khả năng xảy ra trường hợp này là 'svn switch' trên thư mục mẹ bị lỗi (như trong trường hợp tệp cục bộ không cam kết với cùng tên và không có tùy chọn --force), để lại tất cả các tệp sau lỗi 'un-Switch'.

Đó là lý do tại sao (giả sử sự cố ban đầu được sửa chữa sau đó) một 'svn switch' tiếp theo trên cùng một thư mục mẹ sẽ thực sự chuyển các tệp chưa chuyển còn lại sang một đường dẫn repo mới.


3

Điều này có nghĩa là bạn đã chuyển từ bản sao đang hoạt động này sang bản sao khác, ví dụ như bạn đã kiểm tra bản sao đang hoạt động, sau đó hoán đổi nó để so sánh với một nhánh mã. Hãy xem sách SVN để biết chi tiết về cách hoàn tác điều này.


1
Lưu ý rằng liên kết là một phiên bản cũ của sách SVN. Hãy thử tại đây: svnbook.red-bean.com/en/1.5
Andrew Aylett

Điểm tốt. Google lại thất bại với tôi.
me_và

3

Có một cách khác để đạt được trạng thái này - hy vọng sẽ giúp ai đó tiết kiệm thời gian theo dõi nó.

Tôi đã giải nén một thư viện bên ngoài vào thư viện gốc SVN của mình và hóa ra tác giả bên thứ ba đã vô tình đưa thư mục .svn của riêng họ vào một trong các thư mục của họ. Tất nhiên, điều này sẽ ghi đè thư mục subversion, chính xác, của riêng chúng tôi và có tác dụng tương tự như được mô tả ở những nơi khác trên trang này - một thư mục dường như đã bất ngờ chuyển sang một nhánh khác.


1
Vâng, tôi vừa có cái này. Tôi đã sao chép một thư mục các biểu tượng từ dự án này sang dự án khác mà không xóa các .svnthư mục. Xuất một thư mục sạch để sử dụng, hoặc xóa các thư mục .svn sau khi sao chép, và điều đó svn addcó thể đoán trước được.
Eric

1

"Mục đã được chuyển."

Nếu bạn đã sử dụng "svn switch" trên bản sao làm việc của mình, điều đó có thể giải thích điều đó?


Tôi đã cố gắng để sử dụng lệnh switch bây giờ, nhưng tôi không bao giờ có được 'S" trong tình trạng .. Bạn có chuyển Và bạn đã làm điều đó trong một số cách không chính thống?
stiank81

0

Đối với tôi, điều này xảy ra khi lệnh "svn switch" bị gián đoạn và để giải quyết nó với TortoriseSVN, tôi nhấp chuột phải vào tệp và chọn chuyển về phụ huynh


0

Một giải pháp đơn giản để loại bỏ chữ 'S' khi bạn phát hành

svn status

là chỉ cần truy cập dir được đánh dấu bằng 'S' và xóa thư mục .svn ẩn:

rm -rf .svn

Sau đó, các nguồn hiển thị được đánh dấu bằng '?' và bạn có thể dễ dàng thêm chúng mới:

svn thêm đường dẫn / đến / tài nguyên


Trong trường hợp của tôi, chữ 'S' hiển thị bên cạnh các tài nguyên mà tôi đã thêm từ một kho khác trên cùng một máy chủ nên giải pháp mà tôi vừa mô tả ở trên là hiển nhiên.
Torsten Barthel

0

Trong trường hợp của tôi, hai thư mục con trong nhánh đã bị xóa trong thân cây. Tôi đã chuyển từ trung kế nhánh từ thư mục cấp cao nhất, sau đó chuyển trở lại trung kế và gặp sự cố với các thư mục con đó hiện đang ở trạng thái S.

Tôi đã sử dụng câu trả lời của @ahnbizcad làm kim chỉ nam. Từ thư mục mẹ (chính nó nằm trong thư mục cấp cao nhất) của các thư mục con:

svn sw <branch_url>

svn sw <trunk_url>


-6

Tôi khuyên bạn nên đọc trợ giúp chính thức của nó, hãy thử:

svn st --help

hoặc là

svn st --help | grep S

'S' the item has a Switched URL relative to the parent

4
RTFM không trả lời câu hỏi về cách thoát khỏi trạng thái đó.
Madoc,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.