2010-01-28 23 views
6

Đây là tình huống: Chúng tôi đã có một kho lưu trữ svn lớn, đó là "master" (không thể thay đổi điều này bởi vì nó thực sự "sở hữu" bởi một công ty khác). Chúng tôi muốn làm việc tại địa phương trong git để có được sự linh hoạt phân nhánh và tốc độ mà git cung cấp. Nhưng chúng tôi không muốn sao chép toàn bộ kho lưu trữ.Làm thế nào để tạo một bản sao git với các nhánh của một "tiểu dự án"?

Cấu trúc kho trông gần như thế này:

/trunk/project1/* 
     /project2/* 
/branches/branch/project1/* 
       /project2/* 
/tags/tag1/tag1a/project1/* 
      /tag1b/project1/* 
    /tag2/tag2a/project2/* 

Tôi chỉ quan tâm đến project1, nhưng tôi muốn có cả thân và cành (tags không quá quan trọng, nhưng nó sẽ được tốt đẹp để nhận được chúng, quá).

Tôi có thể có được một chi nhánh đơn nhân bản với các thiết lập svn-xa:

[svn-remote "svn"] 
    url = https://svn.company.com/svn/branches/branch1/project1 

nhưng tôi thực sự muốn có được cấu trúc phân nhánh, quá. Tôi đã nghĩ về việc sử dụng bỏ qua-con đường:

[svn-remote "svn"] 
    ignore-paths=^project2|^project3|... 

nhưng tôi sẽ phải cập nhật bỏ qua-đường mỗi khi một top-level "dự án" thư mục mới được thêm vào, mà không phải là thực sự bền vững.

Thứ hai, chúng tôi chỉ thực sự cần các thẻ trong/tags/tag1 (nếu chúng tôi cần thẻ). Bất kỳ suy nghĩ về làm thế nào để làm điều đó sẽ được đánh giá cao.

Trả lời

6

Tôi nghĩ rằng sau trong .git/tập tin cấu hình của bạn nên làm việc:

[svn-remote "svn"] 
    url = https://svn.company.com/svn 
    trunk = trunk/project1:refs/remotes/svn/trunk 
    tags = tags/*/project1:refs/remotes/svn/tags/* 
    branches = branches/*/project1:refs/remotes/svn/branches/* 

tôi dựa này trên configuration section of the git-svn manpage

+0

Vâng, đó đã làm việc. Một điều kỳ quặc là đường dẫn loại trừ hoạt động khi tôi kiểm tra một nhánh đơn có vẻ không hoạt động ở đây. Tôi đã có url = https://svn.company.com/svn/branches/branch1/project1 ignore-paths =^baddir/ và "baddir" không được tìm nạp từ svn. Với cùng một đường dẫn bỏ qua nhưng các svn-remote defs ở trên, "baddir" được tìm nạp. – Spencer

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