Câu trả lời:
Để biết thêm chi tiết, xem SVNBook: "Trạng thái của các tệp và thư mục sao chép đang hoạt động" .
Các trạng thái phổ biến:
U : Tập tin làm việc đã được cập nhật
G : Thay đổi trên repo đã được tự động hợp nhất vào bản sao làm việc
M : Bản sao làm việc được sửa đổi
C : Tập tin này xung đột với phiên bản trong repo
? : Tập tin này không thuộc kiểm soát phiên bản
! : Tệp này nằm dưới sự kiểm soát phiên bản nhưng thiếu hoặc không đầy đủ
A : Tập tin này sẽ được thêm vào kiểm soát phiên bản (sau khi xác nhận)
A + : Tập tin này sẽ được di chuyển (sau khi cam kết)
D : Tập tin này sẽ bị xóa (sau khi cam kết)
S : Điều này biểu thị rằng tệp hoặc thư mục đã được chuyển từ đường dẫn của phần còn lại của bản sao làm việc (sử dụng chuyển đổi svn) sang một nhánh
Tôi : Bỏ qua
X : Định nghĩa bên ngoài
~ : Loại đã thay đổi
R : Mục đã được thay thế trong bản sao làm việc của bạn. Điều này có nghĩa là tệp đã được lên lịch để xóa và sau đó một tệp mới có cùng tên đã được lên lịch để bổ sung vào vị trí của nó.
L : Mục bị khóa
E : Mục tồn tại, như nó đã được tạo, bởi một bản cập nhật svn.
E
? Tất cả các tài liệu nói là "Tồn tại", không hữu ích.
Cũng lưu ý rằng mã kết quả trong cột thứ hai đề cập đến các thuộc tính của tệp. Ví dụ:
U filename.1
U filename.2
UU filename.3
tên tệp.1: tệp đã được cập nhật
tên tệp.2: thuộc tính hoặc thuộc tính trên tệp (chẳng hạn như svn: Keywords) đã được cập nhật
tên tệp.3: cả tệp và thuộc tính của tệp đã được cập nhật
Bạn luôn có thể nhận được một danh sách bằng cách chạy:
svn status --help
Tôi muốn nói điều gì đó về trạng thái "G",
G: Thay đổi trên repo đã được tự động hợp nhất vào bản sao làm việc
Tôi nghĩ định nghĩa trên không rõ ràng, nó có thể tạo ra một chút nhầm lẫn, bởi vì tất cả các tệp được tự động hợp nhất vào bản sao làm việc, một trong những chính xác nên là:
U = item (U) được chỉnh sửa thành phiên bản kho lưu trữ
Thay đổi cục bộ của G = item mer (G) ed với kho lưu trữ
Các thay đổi cục bộ của C = item (C) được cài đặt sẵn với kho lưu trữ
D = item (D) bị xóa khỏi bản sao làm việc
A = item (A) nhúng vào bản sao làm việc
Tôi thường sử dụng svn thông qua một gui, IDE của tôi hoặc khách hàng. Do đó, tôi không bao giờ có thể nhớ các mã khi tôi phải dùng đến dòng lệnh.
Tôi thấy bảng cheat này rất hữu ích: Subversion Cheat Sheet
$ svn status
L index.html
Đầu ra của lệnh được chia thành sáu cột, nhưng điều đó không rõ ràng vì đôi khi các cột trống. Có lẽ sẽ có ý nghĩa hơn khi chỉ ra các cột trống bằng dấu gạch ngang, theo cách ls -l
này, thay vì không có gì. Sau đó, ví dụ, L index.html
sẽ trông như--L--- index.html
, điều này làm cho rõ ràng thông tin duy nhất chúng ta có trong cột thứ ba là thông tin về khóa. Dù sao, một khi bạn biết rằng nó bắt đầu có ý nghĩa hơn.
Cột đầu tiên chỉ ra rằng một mục đã được thêm, xóa hoặc thay đổi.
Không sửa đổi.
A
Mục được lên lịch để bổ sung.
D
Mục được lên kế hoạch để xóa.
M
Mục đã được sửa đổi.
R
Mục đã được thay thế trong bản sao làm việc của bạn. Điều này có nghĩa là tệp đã được lên lịch để xóa và sau đó một tệp mới có cùng tên đã được lên lịch để bổ sung vào vị trí của nó.
C
Nội dung (trái ngược với các thuộc tính) của mục xung đột với các cập nhật nhận được từ kho lưu trữ.
X
Mục có liên quan đến một định nghĩa bên ngoài.
I
Mục đang bị bỏ qua (ví dụ với svn: bỏ qua thuộc tính).
?
Mục không thuộc kiểm soát phiên bản.
!
Mục bị thiếu (ví dụ: bạn đã di chuyển hoặc xóa nó mà không sử dụng svn). Điều này cũng chỉ ra rằng một thư mục không đầy đủ (việc kiểm tra hoặc cập nhật bị gián đoạn).
~
Mục được phiên bản là một loại đối tượng (tệp, thư mục, liên kết), nhưng đã được thay thế bằng loại đối tượng khác.
Cột thứ hai cho biết trạng thái của các thuộc tính của tệp hoặc thư mục.
Không sửa đổi.
M
Thuộc tính cho mặt hàng này đã được sửa đổi.
C
Các thuộc tính cho mục này mâu thuẫn với các cập nhật thuộc tính nhận được từ kho lưu trữ.
Cột thứ ba chỉ được điền nếu thư mục bản sao đang hoạt động bị khóa (dọn dẹp svn thường là đủ để xóa nó)
Mục không bị khóa.
L
Mục bị khóa.
Cột thứ tư chỉ được điền nếu mục được lên lịch để thêm vào lịch sử.
Không có lịch sử với lịch trình cam kết.
+
Lịch sử theo lịch trình với cam kết.
Cột thứ năm chỉ được điền nếu bản sao làm việc của mặt hàng được chuyển đổi so với cha mẹ của nó
Mục là một con của thư mục mẹ của nó.
S
Mục được chuyển đổi.
Cột thứ sáu được điền với thông tin khóa.
Khi các bản cập nhật được sử dụng, tập tin không bị khóa. Nếu các bản cập nhật không được sử dụng, điều này chỉ có nghĩa là tệp không bị khóa trong bản sao làm việc này.
K
Tập tin bị khóa trong bản sao làm việc này.
O
Tệp bị khóa bởi người dùng khác hoặc trong một bản sao làm việc khác. Điều này chỉ xuất hiện khi các bản cập nhật được sử dụng.
T
Tệp đã bị khóa trong bản sao làm việc này, nhưng khóa đã bị đánh cắp và không hợp lệ. Các tập tin hiện đang bị khóa trong kho lưu trữ. Điều này chỉ xuất hiện khi các bản cập nhật được sử dụng.-
B
Tệp đã bị khóa trong bản sao làm việc này, nhưng khóa đã bị hỏng và không hợp lệ. Tập tin không còn bị khóa Điều này chỉ xuất hiện khi các bản cập nhật được sử dụng.
Thông tin lỗi thời xuất hiện trong cột thứ bảy (chỉ khi bạn vượt qua khóa chuyển đổi cập nhật). Đây là điều mà những người mới sử dụng SVN mong đợi lệnh thực hiện, không nhận ra nó chỉ so sánh trạng thái hiện tại của tệp với thông tin mà nó đã tìm nạp từ máy chủ trong bản cập nhật cuối cùng.
Các mục trong bản sao làm việc của bạn là cập nhật.
*
Một phiên bản mới hơn của mục tồn tại trên máy chủ.
Hãy xem trong tài liệu tham khảo Subversion Book: "Trạng thái của các tệp và thư mục sao chép làm việc"
Rất khuyến khích cho bất cứ ai làm bất cứ điều gì với SVN.
Bất cứ khi nào bạn không có quyền truy cập vào tài liệu ( SVNBook ), hãy nhập (Linux):
svn help status | grep \'\?\'
svn help status | grep \'\!\'
svn help status | grep \'\YOUR_SYMBOL_HERE\'
hoặc chèn hàm sau vào tệp ~ / .bashrc của bạn, như vậy:
svncode() {
symbol=$1
[ $symbol ] && svn help status | grep \'$(echo $symbol)\' || \
echo "usage: svncode <symbol>"
}