SVN Cam kết các tệp cụ thể


219

Có cách nào để chỉ cam kết một danh sách các tệp cụ thể không (eq chỉ là một trong danh sách các tệp mà SVN muốn cam kết).

Tôi đang làm việc trên MAC OS X trong Terminal, không có UI nào.

Câu trả lời:


331

Chắc chắn rồi. Chỉ cần liệt kê các tập tin:

$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png

Tôi không biết cách nào để bảo nó bỏ qua một tập hợp tệp nhất định. Tất nhiên, nếu các tệp bạn muốn cam kết dễ dàng được liệt kê bởi trình bao, bạn có thể sử dụng tệp đó:

$ svn ci -m "No longer sets printer on fire" printer-driver/*.c

Bạn cũng có thể yêu cầu lệnh svn đọc danh sách các tệp cần cam kết từ một tệp:

$ svn ci -m "Now works" --targets fix4711.txt

1
Vì vậy, về cơ bản, tôi nên đặt tên các tập tin rõ ràng? Tôi không thể nói không chạm vào tập tin cụ thể này?
0100110010101

16
bạn có thể làm: svn st | cắt -c 9-> Target.txt, sau đó chỉnh sửa tệp Target.txt để xóa tệp cụ thể và sử dụng tham số --target để chỉ định filelist.
kiềm chế

17
Tôi nghĩ rằng thách thức mới của tôi là tạo ra một lỗi khiến máy in bốc cháy.
James Webster

3
Thật là thảm hại và vô lý như nhau. Không có khu vực tổ chức. svn addđược sử dụng để thêm tập tin vào kho lưu trữ.
Kandinski

68

Sử dụng thay đổi. Ưu điểm của việc chỉ định các tệp là bạn có thể hình dung và xác nhận mọi thứ bạn muốn thực sự được bao gồm trước khi bạn cam kết.

$ svn changelist fix-issue-237 foo.c 
Path 'foo.c' is now a member of changelist 'fix-issue-237'.

Điều đó đã được thực hiện, svn bây giờ giữ mọi thứ riêng biệt cho bạn. Điều này giúp khi bạn tung hứng nhiều thay đổi

$ svn status
A       bar.c
A       baz.c

--- Changelist 'fix-issue-237':
A       foo.c

Cuối cùng, nói với nó để cam kết những gì bạn muốn thay đổi.

$ svn commit --changelist fix-issue-237 -m "Issue 237"

+1 cho câu trả lời trên điểm. Changelists thực sự là con đường để đi!
Miro Markaravanes

1
Nếu bạn muốn thêm các thư mục mới vào danh sách thay đổi, đừng quên sử dụng svn add trước, sau đó sử dụngsvn changelist fix-issue-237 --recursive path/to/directory
Fabian Schmengler

Trên thực tế, các thay đổi không thể được sử dụng với các thư mục mới .... "Subversion hiện không hỗ trợ việc sử dụng các thay đổi với các thư mục."
Fabian Schmengler

1
@fschmengler: SVN là một công cụ khủng khiếp. Tôi chỉ cố gắng làm tốt nhất công việc tồi tệ đó. Chuyển sang git. : P
jcwenger

10
Tôi đã chuyển sang Git nhiều năm trước và không bao giờ nhìn lại. Bị buộc phải sử dụng svn một lần nữa cho một khách hàng, cảm giác như chạy với bóng và dây chuyền ở cả hai chân
Fabian Schmengler

38

Về cơ bản, bạn đặt các tệp bạn muốn cam kết trên dòng lệnh

svn ci file1 file2 dir1/file3

1
Vì vậy, về cơ bản, tôi nên đặt tên các tập tin rõ ràng? Tôi không thể nói không chạm vào tập tin cụ thể này?
0100110010101

2
Nếu chạy mà không có đối số, svn cam kết tất cả các tệp đã thay đổi nếu chạy với một tệp làm đối số thì tệp này được cam kết nếu chạy với một thư mục, tất cả các tệp đã thay đổi trong thư mục được cam kết
Wienczny

22

Do trạng thái lật đổ của tôi, tôi đã phải sáng tạo. svn stcho thấy M, A~trạng thái. Tôi chỉ muốn MAvì vậy ...

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt

Lệnh này cho biết tìm tất cả các dòng đầu ra bằng cách svn stbắt đầu bằng Mhoặc A, cắt bằng dấu phân cách dấu cách, sau đó lấy colums 8 đến cuối. Kết xuất nó vào Target.txt và ghi đè.

Sau đó sửa đổi Target.txt để cắt thêm danh sách tệp. Sau đó chạy bên dưới để cam kết:

svn ci -m "My commit message" --targets targets.txt

Có lẽ không phải là trường hợp sử dụng phổ biến nhất, nhưng hy vọng nó sẽ giúp được ai đó.


2
Bạn cũng có thể sử dụng grep -v '^~'để danh sách đen những gì bạn muốn.
Martin Konecny


7

thử kịch bản này ..

#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`; 
     do LIST="${LIST} $f $NULL on"; 
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`

1

Tôi tạo một thư mục (phụ) có tên "ẩn", di chuyển tệp mà tôi không muốn cam kết ở đó. Sau đó thực hiện cam kết của tôi, bỏ qua khiếu nại về các tập tin bị thiếu. Sau đó di chuyển tệp ẩn từ ẩn trở lại ./

Tôi biết không có nhược điểm của chiến thuật này.

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.