2011-05-13 17 views
14

Chúng tôi có một kho lưu trữ với một số tệp (không có thư mục). Mỗi lần xây dựng chúng ta phải tải xuống cùng một thư mục từ một nguồn khác (db), sau đó cam kết thay đổi SVN - cập nhật hiện tại, xóa không tồn tại và thêm tệp mới.SVN: analog của hg's addremove

Vì vậy, ý tưởng là phải có 'bản sao' của kịch bản db trong SVN từng xây dựng (đó là lý do tại sao MSBuild được sử dụng)

Vấn đề là tôi không biết tương tự của hg 's addremove - Tự động đồng bộ hóa hai thư mục.

có ai biết cách addremove có thể được mô phỏng không?

+1

Dưới đây là một bài trong đó bao gồm hai bí danh vỏ (một cái gọi là add_all và một cái gọi là rm_all). Điều này về cơ bản sẽ làm cho nó có thể cho bạn để chạy 'add_all && rm_all' để làm chính xác những gì 'hg addremove' hiện, nhưng với subversion. http://www.plexusweb.com/staff/travis/blog/post/267/Batch-addremove-files-to-Subversion –

+0

Tôi không thể tin rằng điều này là không thể với svn, nhưng tôi không thể xem như thế nào . Nếu không có tùy chọn tốt hơn, bạn có thể muốn xem xét sử dụng hgsubversion để duy trì repo hg cục bộ, sử dụng 'hg addremove' trên đó và sau đó đẩy các thay đổi trở lại svn. –

Trả lời

0

Tôi đã luôn sử dụng tập lệnh svn_load_dirs.pl đi kèm với svn cho mục đích này.

9

Cá nhân tôi có một kịch bản bash chút để làm điều đó (là trên linux):

svn status | grep "^\?" | gawk '{print $2}' | xargs -r svn add 
svn status | grep "^\!" | gawk '{print $2}' | xargs -r svn remove 

EDIT: Nhờ cesar, đây là một phiên bản đơn giản:

svn status | gawk '/^\?.*/ {print $2}' | xargs -r svn add 
svn status | gawk '/^\!.*/ {print $2}' | xargs -r svn remove 
+1

tại sao không bỏ qua grep và chỉ cần đi với: 'svn status | gawk '/^\?.*/ {print $ 2}' | xargs -r svn add' – cesar

+2

@anonymous Câu hỏi hay, có lẽ vì tôi đã có đường ống qua grep để xem đầu ra thực tế trước khi cố gắng làm điều gì đó với nó. Và tất nhiên không thực sự đọc trang người đàn ông diều hâu và do đó không biết về cú pháp đó. Cảm ơn. –

+0

Còn tên tệp có chứa khoảng trắng thì sao? Tôi không biết đủ cú pháp gawk để thay đổi seperator bản ghi thành \ 0 ... – moi

0

(Cải thiện @ Eric -Karl's answer)

Làm việc cho:

  • đường dẫn với 'không gian' chars
  • đường dẫn với '@' chars
  • đường dẫn với '\' chars (trong MSYS vỏ)

svn status | perl -ne 'print "$1\0" if /^\?\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn add '[email protected]' 
svn status | perl -ne 'print "$1\0" if /^\!\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn remove '[email protected]' 
Các vấn đề liên quan