2010-07-20 23 views
17

Tôi cố gắng để thay đổi "svn: externals" tài sản của một kho lưu trữ từ xa thông qua lệnh này:Có thể thay đổi thuộc tính "svn: externals" của kho lưu trữ lật đổ từ xa không?

svn ps svn:externals "vendor1 http://vendor_repo_here.com" http://main-repo-here.com 

Tôi đang mong đợi trên lệnh để thay đổi "svn: externals" tài sản từ bất cứ điều gì đó là để "vendor1 http://vendor_repo_here.com " .. Nhưng nó ném một lỗi:

Setting property on non-local target 'http://main-repo-here.com' needs a base revision. 

Vì vậy, tôi cố gắng này:

svn ps -r HEAD svn:externals "vendor1 http://vendor_repo_here.com" http://main-repo-here.com 

Bây giờ nó nói:

Cannot specify revision for versioned property 'svn:externals' 

Tôi có làm gì sai không? Có anyway để thay đổi điều này từ xa thông qua dòng lệnh?

Trả lời

28

Tôi gặp sự cố tương tự. Turtoise dường như kiểm tra và sau đó cam kết một lần nữa, vì vậy tôi đã viết một kịch bản mà làm như vậy.

svn checkout <URL> repocopy --depth 'empty' 
svn propget svn:externals repocopy > tmp2 
//whatever you want to do > tmp_new 
svn propset svn:externals repocopy -F tmp_new 
svn commit -m "commit comment" tmp 
rm -f -r repocopy 
rm tmp2 
rm tmp_new 
+2

Ok, do đó, thêm 'chiều sâu' sẽ đảm bảo thanh toán ngay lập tức bất kể kích thước repo của bạn ... phải không? Nghe tuyệt đó. Chưa thử nó - nhưng tôi nghĩ câu trả lời của bạn là chấp nhận được nhất. –

+2

Có, "--depth empty" thực hiện điều đó. "--depth ngay lập tức" cũng tồn tại và sẽ kiểm xuất các tệp và thư mục bên trong thư mục cấp cao nhất đó. – panschk

+3

Cảm ơn, nhưng trong dòng 5, tôi muốn làm 'svn commit -m" commit comment "repocopy'; khác hơn thế, tuyệt vời. –

4

từ sự giúp đỡ của svn propset:

propset (pset, ps): Thiết lập giá trị của một tài sản trên các tập tin, dirs, hoặc sửa đổi. sử dụng: 1. propset PROPNAME PROPVAL PATH ... 2. propset PROPNAME --revprop -r REV PROPVAL [TARGET]

  1. Thay đổi một tập tin phiên bản hoặc thuộc tính thư mục trong một bản sao làm việc.
  2. Thay đổi thuộc tính không phiên bản trên bản sửa đổi kho lưu trữ. (MỤC TIÊU chỉ xác định kho lưu trữ truy cập.)

svn: externals là thuộc tính được phiên bản, không thể thay đổi theo cách như vậy.

+0

Tôi không chắc cách TortoiseSVN thực hiện trực tiếp từ "Trình duyệt kho lại", như Si đã đề xuất. –

1

Có thể thay đổi svn:externals từ xa sử dụng TortoiseSVN:

TortoiseSVN>Repo-Browser> (chọn svn: externals dir)> Show Properties> Sửa

đó làm việc cho tôi.

Thật thú vị khi biết tại sao TortoiseSVN vẫn chưa thể svn.

+0

Đó là thông tin tốt .. Tôi biết về điều này. Nhưng nó không thể được thực hiện từ dòng lệnh? –

+0

Tài liệu mà Adrian cung cấp cho thấy không thể, vì vậy, tốt nhất bạn nên gửi email cho danh sách gửi thư hoặc lật đổ hoặc danh sách gửi thư TortoiseSVN để biết lý do tại sao một khách hàng (có thể sử dụng cùng một API/thư viện) có thể làm điều này. Bạn có thể nhận được may mắn trên SO và tìm một ai đó với kiến ​​thức sâu sắc hơn, tôi biết Stefan (TortoiseSVN dẫn dev) đã được trên SO một trong khi trước đây, nhưng nồi may mắn thực sự! – si618

0

Propedit sẽ hoạt động trên thuộc tính sửa đổi, không chắc chắn về propset nhưng điều đó có tác dụng.

Tuy nhiên: repo sẽ phải được sửa đổi để cho phép chỉnh sửa thuộc tính sửa đổi (trong móc thay đổi trước khi sửa đổi) hoặc chúng sẽ bị từ chối. Sau khi hoàn tất, bạn có thể đặt các thuộc tính sửa đổi khác như tác giả, ngày, nhật ký, v.v. (tất nhiên, móc của bạn có thể thông minh, từ chối tất cả trừ thay đổi bên ngoài, nhưng bạn cần phải biết mình sẽ phải mã hóa ở khả năng đó)

Bạn sẽ phải đặt trình chỉnh sửa - Tôi không nghĩ bạn có thể ghi đè trực tiếp giá trị hiện tại, trừ khi propset thực hiện điều này vì nó dự kiến ​​hiển thị cho bạn giá trị hiện tại để bạn chỉnh sửa.

+0

'svn: externals' không phải là, tuy nhiên, một thuộc tính sửa đổi, nó là một bình thường (mặc dù đặc biệt). – eichin

0

Khi bạn cài đặt subversion, bên cạnh lệnh 'svn' có một lệnh khác được cài đặt có tên 'svnmucc'. 'svnmucc' có khả năng thiết lập các thuộc tính url dựa trên dòng lệnh. Điều này bao gồm các thuộc tính được phiên bản.

d:>svnmucc 
enter code Subversion multiple URL command client 
usage: svnmucc ACTION... 

    Perform one or more Subversion repository URL-based ACTIONs, committing 
    the result as a (single) new revision. 

Actions: 
    cp REV SRC-URL DST-URL : copy [email protected] to DST-URL 
    mkdir URL    : create new directory URL 
    mv SRC-URL DST-URL  : move SRC-URL to DST-URL 
    rm URL     : delete URL 
    put SRC-FILE URL  : add or modify file URL with contents copied from 
         SRC-FILE (use "-" to read from standard input) 
    propset NAME VALUE URL : set property NAME on URL to VALUE 
    propsetf NAME FILE URL : set property NAME on URL to value read from FILE 
    propdel NAME URL  : delete property NAME from URLhere 
+0

* "___" với subversion * ..? – Xlander

+0

Ok, tôi thừa nhận, là người Hà Lan, tôi giỏi tiếng Hà Lan. Tôi đã điều chỉnh văn bản của mình để làm cho nó dễ đọc hơn (tôi hy vọng). –

+0

Lol ok. Đó không phải là một vấn đề. Một cách tốt hơn để nói nó sẽ là * Khi bạn cài đặt subversion, bên cạnh lệnh 'svn' có một lệnh khác được cài đặt được gọi là 'svnmucc'. * – Xlander

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