2010-07-20 32 views
5

một vài tháng trước, tôi đã cấu hình một git với một kho svn. Cho đến bây giờ tôi chỉ sử dụng kho svn để cập nhật ứng dụng được cung cấp trên đó. Nhưng bây giờ tôi cũng muốn cam kết trở lại. Để thực hiện điều này, mọi tính năng tôi cam kết cần phải nằm trong một nhánh riêng biệt. Tôi đọc về cách bạn nên tạo ra một chi nhánh mới vv Nhưng tôi nghĩ rằng tôi mis-cấu hình git của tôi, tôi không có bất kỳ thông tin chi nhánh vv tôi nghĩ rằng tôi chỉ có thông tin thân cây. Đây là cách kho svn của tôi đã được thiết lập trong cấu hình git của tôi:git-svn branching: cách cấu hình git config

[remote "origin"] 
    url = url-of-git-repository 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[svn-remote "svn"] 
    url = url-of-svn-repository/trunk 
    fetch = :refs/remotes/git-svn 
[branch "master"] 
    merge = refs/heads/master 
    remote = origin 
... other branch information below (these are git branches) 

Bây giờ như bạn có thể nhìn thấy url svn-xa tôi đi trực tiếp vào thân cây. Tôi đọc về việc thêm phần này:

branches = branches/*:refs/remotes/* 

nhưng khi tôi tạo nhánh mới thì nó sẽ thêm nó vào thân cây/nhánh /. Khi tôi không thêm vào dòng thì nó không biết đích đến là gì của nhánh.

Bất kỳ ý tưởng nào về cách giải quyết điều này mà không vi phạm các chi nhánh, mã, v.v ... hiện tại?

Greets, Daan

Trả lời

6

Tôi tin cấu hình chi nhánh là tương đối so với url svn-xa.

Dưới đây là cấu hình của chúng tôi cách thức mà nó đã được thực hiện bằng cách làm

git svn -s url-of-svn-repository/foo

(Bên trong foo thư mục, chúng tôi có trunk/chi nhánh/thẻ cấu trúc bình thường)

[svn-remote "svn"] 
     url = url-of-svn-repository 
     fetch = foo/trunk:refs/remotes/trunk 
     branches = foo/branches/*:refs/remotes/* 
     tags = foo/tags/*:refs/remotes/tags/* 

Bạn có thể thử điều chỉnh cấu trúc này, hoặc làm git svn của bạn sao chép lại với tham số -s. Nó sẽ cấu hình tất cả điều này cho bạn (- standard-layout).

0

Đây là bài đăng giúp tôi làm việc với svn với một dự án có cấu trúc nhánh rất không chính thống (ngang bằng với khóa học cho các công ty sử dụng SVN vì lý do nào đó mà tôi sợ).

http://www.dmo.ca/blog/20070608113513/

+0

Sẽ tốt hơn nếu bạn có nhiều nhánh svn được xử lý trong cùng phần '[svn-remote xxx]'. Sau đó, bạn không cần phải thực hiện 'git svn fetch' cho từng nhánh riêng biệt. Ngoài ra tôi nghĩ rằng các sửa đổi svn phổ biến được đại diện sau đó là cam kết chia sẻ duy nhất trong kho git phản chiếu. Bạn có thể có '*' trong định nghĩa 'branch' trong bất kỳ thành phần thư mục con nào của đường dẫn, mặc dù bạn cần chỉnh sửa' .git/config' theo cách thủ công để thực hiện việc này. – FooF

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