2010-02-25 26 views
34

câu hỏi liên quan: Moving repository trunk to another’s branch (with history)SVN di chuyển thư mục duy nhất vào kho lưu trữ khác (với lịch sử)


Tôi biết rằng người ta có thể đổ hoàn toàn kho SVN với lịch sử và tải nó vào một người dùng định nghĩa (phụ) thư mục của kho lưu trữ đích bằng cách sử dụng:

// in source repo 
> svnadmin dump . > mydumpfilename 

// in destination repo (backslashes because I'm using Windows) 
> svnadmin load . < mydumpfilename --parent-dir some\sub\directory 

Nhưng điều này sẽ nhập toàn bộ kho lưu trữ vào thư mục con của kho mục tiêu. Những gì tôi muốn là để xác định một thư mục con trong kho lưu trữ nguồn cần được xuất khẩu. Một cái gì đó như svnadmin dump . --source-path old\sub\dir > mydumpfilename.

Làm cách nào để đạt được điều đó? Nếu TortoiseSVN có thể làm điều đó, hãy nói như vậy;)


SOLUTION: Nhờ câu trả lời Tim Henigan của, đây là cách chính xác để làm điều đó:

// execute in destination repo 
svndumpfilter include source\sub\dir < mydumpfilename | svnadmin load . --parent-dir destination\sub\dir 

Hy vọng điều này sẽ giúp những người khác, quá ...

+0

Tôi nghĩ rằng bạn không thể làm điều đó, trừ tự sao chép và tái áp dụng tất cả các thay đổi, như các phiên bản lật đổ là kho rộng, vì vậy di chuyển một thư mục duy nhất với lịch sử không thực sự áp dụng trong trường hợp này. nghĩa là không có tệp nào được sửa đổi nhưng toàn bộ kho lưu trữ được sửa đổi và khác biệt của toàn bộ kho lưu trữ được lưu trữ – Zenon

+0

Câu hỏi hay, cảm ơn. – richo

+2

Thực ra đây chỉ là một nửa của câu chuyện. Bạn cần phải loại bỏ các thư mục trong kho nguồn, quá, bằng cách xây dựng lại nó sử dụng 'svndumpfilter loại trừ nguồn \ sub \ dir' tất nhiên, xem http://stackoverflow.com/questions/205296/delete-file-contents-from- svn-history – Tino

Trả lời

20

Check-out svndumpfilter và phần này trên Repository Maintenance.

Khi bạn có tệp kết xuất cho toàn bộ kho lưu trữ cũ, bạn có thể sử dụng svndumpfilter để trích xuất chỉ phần mà bạn muốn.

Tôi không nhận thức được một cách để làm điều này với TortoiseSVN.

+0

giải pháp rất đẹp, hoạt động hoàn hảo. Cảm ơn nhiều! – AndiDog

+0

Và nếu bạn bối rối vì sao nó không hoạt động trên máy cục bộ của bạn, đó là vì 'svndump' được cho là chạy trên nguồn kho thực tế. Sử dụng 'svnrdump' thay - http://stackoverflow.com/questions/8866035/unable-to-do-an-svn-dump-error-e720002-and-format-errors – drzaus

0

Một chút muộn cho bữa tiệc, nhưng ... nếu bạn đã kéo bản sao cục bộ của cả hai kho bằng cách sử dụng TortoiseSVN, bạn thực sự có thể sao chép một thư mục từ một sang khác bằng lịch sử bằng cách bấm chuột phải vào thư mục (hoặc tệp) từ Repo1 và kéo nó vào Repo2. Khi bạn thả chuột bạn sẽ nhận được danh sách các tùy chọn:

enter image description here

"SVN xuất khẩu các mặt hàng phiên bản ở đây" sẽ sao chép (đệ quy) với lịch sử.

+0

tôi không nhận được lịch sử, cũng không phải là nó thêm các tập tin vào repo - những gì tôi là tôi mất tích? – drzaus

+0

@drzaus: Sau khi bạn di chuyển các mục nội bộ, bạn cần phải cam kết chúng vào repo. Cho đến khi bạn làm như vậy, SVN sẽ không đăng ký các mục hoặc lịch sử trong repo mới. – noisiveRevision

+0

Chỉ để chắc chắn rằng tôi hiểu - sau khi xuất khẩu, tôi cần phải tự thêm tất cả các tập tin không phiên bản mà tôi vừa xuất ra, và sau đó sau khi cam kết SVN sẽ đưa vào lịch sử của họ? – drzaus

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