2009-05-18 35 views
7

Tôi đã thử sử dụng svn ci dir/a dir/b -m "nhận xét của tôi" nhưng điều này không hiệu quả. Tôi cũng sử dụng svn ci dir/a/* dir/b/* -m "bình luận của tôi" và nó cũng không hoạt động.Làm cách nào để tôi có thể thực hiện nhiều thư mục cùng một lúc bằng cách sử dụng subversion?

Tôi biết bạn có thể chỉ định nhiều tệp, nhưng làm cách nào tôi có thể yêu cầu lật đổ để kiểm tra tất cả các tệp đã sửa đổi trong các thư mục này? Tôi chủ yếu muốn làm điều này để tất cả các thay đổi của tôi có được trong một sửa đổi. Tôi có thể checkin một thư mục tại một thời điểm, nhưng điều này kết thúc lên cho tôi phiên bản khác nhau cho mỗi thư mục ..

+0

để có nhiều tệp được sửa đổi khác trong dir/c mà bạn không muốn cam kết? – dotjoe

+0

Có nhiều tệp đã sửa đổi trong các thư mục mà tôi muốn kiểm tra. Tôi biết svn commit sẽ chỉ kiểm tra các tệp mà tôi đã sửa đổi, đó là những gì tôi muốn. Tôi không lo lắng về các tập tin tôi không muốn cam kết, nếu điều đó trả lời câu hỏi của bạn .. –

Trả lời

1

Tôi chỉ nghĩ rằng bạn có 1 tùy chọn: kiểm tra trong thư mục chứa - thư mục có cả hai thư mục này dưới dạng subdirs.

Nếu chúng không được tổ chức như vậy (nghĩa là cả hai thư mục cấp cao nhất trong repo), thì không có nhiều việc bạn có thể làm - lệnh svn chỉ hoạt động trên một thư mục duy nhất.

+0

Cả hai đều chia sẻ một thư mục cấp cao nhất nhưng thư mục đó khá ... rất lớn, với nhiều thư mục con khác. –

+0

đủ công bằng, điều đó có nghĩa là svn sẽ mất nhiều thời gian hơn để tìm kiếm thông qua chúng để tìm tất cả các tệp cần cam kết. Nếu không có, thì nó nhanh chóng đáng kinh ngạc. Hãy thử sử dụng trạng thái svn để xem (trạng thái sẽ mất nhiều thời gian hơn ci BTW) – gbjbaanb

+0

svn commit sẽ hoạt động trên nhiều thư mục, nhưng chỉ khi chúng nằm trong cùng một bản sao làm việc. Nếu có những thứ bạn không muốn, bạn có thể sử dụng các thư mục thưa thớt của subversion 1.5 để tạo một bản sao làm việc nhỏ hơn, ngắn gọn hơn. – crashmstr

4
svn add dir/a 
svn add dir/b 
svn commit 

Mặc dù, nhiều khả năng, bạn đang nghĩ:

svn add dir/* 
svn commit 
+0

Các thư mục đã có trong kho, tôi chỉ muốn kiểm tra trong các tập tin được sửa đổi trên địa phương của tôi. –

+0

Nếu chúng đã được thêm vào, chỉ cần thực hiện "svn commit" sẽ bao gồm nó. –

0

Điều này rất dễ dàng nếu bạn trả phòng từ thư mục cấp cao hơn cho vị trí a và b. Vì vậy, nếu bản sao làm việc của bạn là "dir" và a và b có thay đổi, cam kết "dir" để thực hiện thay đổi cho cả hai. Tôi làm điều này tất cả các thời gian.

Chỉnh sửa:
Để thực hiện nhiều hơn một thư mục, bạn cần cho cùng một bản sao làm việc.

Nếu bạn lo lắng về quá trình xử lý, bạn có thể thử thanh toán thưa thớt chỉ với các thư mục bạn cần, và sau đó bạn chỉ có thể cam kết thư mục cơ sở hoặc các thư mục con nếu cần. dự án.

Sparse Directories Information

8

Bạn có thể cần phải xác định những gì hiện "nhưng điều này không làm việc" có nghĩa là bởi vì nó hoạt động tốt ở đây:

D:\Projects>svn commit -m 'test1' test\aaa "test\aaa bbb ccc" 
Sending  test\aaa\aaa222\xxx.txt 
Sending  test\aaa bbb ccc\aaa.txt 
Transmitting file data .. 
Committed revision 8. 

D:\Projects> 
+0

Tôi tự hỏi nếu chúng là các bản sao làm việc riêng biệt? Điều đó có thất bại không? – crashmstr

+0

Có, nó sẽ thất bại. OTOH chúng tôi không biết bố cục của bản sao làm việc của OP, vì vậy nó có thể hoặc không có thể là lý do tại sao nó "không hoạt động". –

+0

C: \ zoo> svn ci c: \ sở thú \ tiger c: \ zoo \ lion -m "nhận xét của tôi" svn: 'C: \ zoo' không phải là bản sao làm việc đây là lỗi tôi nhận được. Nó sẽ hoạt động nếu tôi chỉ chuyển nó một thư mục, nhưng khi tôi đưa cho nó một thư mục thứ hai nó bị lỗi. –

0

Xem xét sử dụng svn: externals để kiểm tra ra một phần của kho. Bạn có thể chọn và chọn thư mục để nhận, sau đó cam kết với nhiều đích trong một bước. Chúng tôi đã sử dụng phương pháp này trong một thời gian với thành công lớn.

+0

Tôi đang nói về khách hàng TortoiseSVN ... – GregC

+0

Tôi thật sự khuyên bạn nên xem các thư mục thưa thớt trong SVN ngay bây giờ, nếu bạn đang sử dụng Tortoise, thì nó đơn giản như bạn có thể nhận được - tuyệt vời của nó. – gbjbaanb

0

Xét dưới đây là các truy vấn

  1. bạn có rất nhiều file kiểm tra ra từ kho lưu trữ thành nhiều thư mục và nhiều trong số họ đã sửa đổi và bạn không nhớ các tập tin đã sửa đổi và bạn sẽ rất khó sáp nhập một tập tin tại một thời điểm, sau đó làm như sau

đi đến thư mục cấp cao nhất và chạy lệnh

svn ci -m "comments" 

điều này sẽ kiểm tra tất cả các tệp đã sửa đổi trong thư mục cấp cao nhất và nhiều thư mục con bên dưới nó.

0

Đã xảy ra sự cố tương tự. Tôi đã có một kho lưu trữ và tôi cần có hai bản sao làm việc riêng biệt của một số thư mục con của repoeitory.Kho là như thế này:

/web/lib 
/web/htdocs 
... 

... mà tôi cần phải có trong bản sao làm việc riêng (tương ứng):

C:/.../web/lib 
C:/.../htdocs/cbs 

tôi giải quyết điều này bằng cách có một "bậc thầy" bản sao của /web làm việc trong C:/.../web và tạo liên kết cứng (hoặc giao lộ NTFS) trong C:/.../htdocs/cbs "trỏ" tới C:/.../web/htdocs. Vì vậy, bất cứ khi nào tôi thực hiện thay đổi cục bộ trong một trong những bản sao làm việc đó, tôi luôn cam kết số C:/.../web, tự nhiên chứa các thay đổi từ cả hai bản sao làm việc.

Tôi hy vọng cách này có thể hữu ích cho bạn.

0

Đã lâu rồi kể từ khi câu hỏi này được hỏi, nhưng tôi có bản cập nhật cho bất kỳ khách đến trễ nào.

Giả sử bạn có một cây như dir/a, dir/b, dir/c, dir/d .... và muốn cam kết thay đổi chỉ trong thư mục con a và b, lệnh công trình sau đây:

svn ci dir/a/* dir/b/* -m "bình luận của tôi"

Nếu điều này thực sự không hiệu quả khi bạn thử nó bảy năm trước, tôi chỉ có thể giả định rằng tính năng này được thêm vào trong các phiên bản tiếp theo.

Các vấn đề liên quan