2013-07-25 37 views
22

Tôi đang cố gắng sử dụng git svn để sao chép một thư mục duy nhất của một kho lưu trữ SVN vào kho lưu trữ Git.git svn clone của một thư mục duy nhất của kho SVN

Nếu tôi sử dụng git svn clone svn+ssh://path/to/repo/trunk/directory, tôi nhận được một repo Git mà không có chi nhánh phản ánh các chi nhánh trong repo SVN nguồn.

Nếu tôi sử dụng git svn --stdlayout svn+ssh://path/to/repo/trunk/directory, tôi nhận được repo Git trống. Sau đây là kết quả của lệnh:

Initialized empty Git repository in /directory/.git/ 
Using higher level of URL: svn+ssh://path/to/repo/trunk/directory => svn+ssh://path/to/repo 
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: File not found: revision 100, path '/trunk/directory' 
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history. 
This may take a while on large repositories 

Tôi đã đọc rằng cách để sửa chữa ở trên là để thêm một phạm vi sửa đổi như -r 1000:HEAD, điều này vẫn tạo ra một repo trống. Đầu ra là:

Initialized empty Git repository in /directory/.git/ 
Using higher level of URL: svn+ssh://path/to/repo/trunk/directory => svn+ssh://path/to/repo 

Bất kỳ ý tưởng về làm thế nào để sao chép một thư mục con của một kho SVN sử dụng git-svn mà vẫn lấy tất cả các chi nhánh & thẻ từ nguồn SVN respository?

Trả lời

38

Bạn không muốn bố trí tiêu chuẩn, bạn muốn một cái gì đó như thế này:

git svn clone svn+ssh://path/to/repo/ --trunk=trunk/directory --branches=branches/*/directory --tags=tags/*/directory 
+7

Thông tin chi tiết ở đây là bạn có thể sử dụng ký tự đại diện trong đối số '--branches'. Tốt nhất. –

+2

Chỉ cần lưu ý - nếu bạn không có các chi nhánh hoặc thẻ cho thư mục cụ thể đó thì bạn có thể bỏ qua các tham số '--branches' và' --tags' một cách an toàn. Đó chỉ là sử dụng '--trunk = ...' thay vì '--stdlayout' sẽ hoạt động tốt. – Nux

22

Chuẩn bị và vào thư mục dự án địa phương:

mkdir local/project/path 
cd local/project/path 

Khởi kho git địa phương với svn từ xa và lấy dữ liệu:

git svn init http://my_svn_server.com/repository/project/location 
git svn fetch 

Tín dụng chuyển đến Gabriel Saldaña: ​​http://blog.gabrielsaldana.org/using-git-with-subversion-repository-subdirectory/

+2

hoạt động như một nét duyên dáng –

+1

Lưu ý rằng điều này không cho phép thêm tệp ánh xạ người dùng (tác giả). Ít nhất không phải với '-A'. – Nux

+1

Điều này thực tế không khác gì so với bản sao một bước 'git svn' thường. – MarkHu

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