đây là công việc tôi hiện đang sử dụng cho các dự án svn của tôi (tôi không bao giờ sử dụng các chi nhánh svn, và một số dự án đang tích cực làm việc trên bởi những người khác cũng):git & svn externals - một giải pháp cuối cùng chưa?
- trên máy chủ, làm inital
git svn fetch
mà có thể mất hàng giờ. Cũng tạo ra một chi nhánh 'xây dựng'. - trên một nhân bản máy phát triển nhanh chóng tại là:
git clone srv://project.git, git checkout build
tiếp theogit update-refs ..., git svn fetch
để khôi phục lại các liên kết đến các kho svn - làm việc, cam kết, việc cam kết, ...
- để kiểm tra xem mọi việc lành mạnh,
git push build
đến máy chủ và kích hoạt bản dựng ở Hudson cho chi nhánh đó - để lưu trữ công việc để tôi có thể làm việc trên máy khác, đồng thời đẩy chi nhánh xây dựng
- khi kết hợp với nhau theo các bước hợp lý (ví dụ: một cho mỗi lỗi) , cam kết svn và đặt lại mọi thứ như
git checkout master, git merge build, git svn dcommit, git push, git checkout build, git rebase master, git push build
Nhập svn externals. Tôi đã thử mọi tập lệnh here nhưng tất cả đều không thành công. externals của tôi được thiết lập như thế này:
/path/to/x x
/path/to/y/z y/z
/path/to/a/b.file a/b.file
và các kịch bản làm những việc như cố gắng tạo /path/to/x
trong thư mục gốc của hệ thống tập tin và git svn fetch /path/to/x
. Ngoài ra các tập tin duy nhất dường như gây ra nhiều vấn đề hơn. (Câu hỏi con 1: định dạng svn: externals mà các script này được viết là gì?)
Dường như khó sửa đổi một trong các kịch bản để xử lý tình huống của tôi và sao chép cấu trúc thư mục nhưng sau đó tôi còn lại với một vấn đề lớn: nếu tôi thay đổi một tập tin trong cả hai x và y/z thư mục, tôi không thấy một cách để tham gia này vào một cam kết svn duy nhất và đó là một trong những lý do tôi bắt đầu sử dụng git ở nơi đầu tiên.
Do đó câu hỏi: có cách nào tôi có thể sao chép luồng công việc trên, chỉ sử dụng các phần của một kho lưu trữ svn nhất định, theo cách mà tôi có thể thực hiện svn dcommit trong thư mục gốc không? Tôi thích một giải pháp sẵn sàng sử dụng hoạt động trên cả Linux và Windows.
chỉnh sửa Tôi đã nhanh chóng tấn công qua một trong các tập lệnh mà tôi đã tìm thấy và làm cho nó sao chép cấu trúc thư mục của các externals svn. Tuy nhiên, tôi không thể sao chép các tệp đơn lẻ, đây là kết quả đầu ra:
git svn clone -r HEAD srv://svn/repo/path/to/projects.sln
Initialized empty Git repository in xxx/projects.sln/.git/
Invalid filesystem path syntax: REPORT request failed on '/svn/repo/!svn/vcc/default':
Cannot replace a directory from within at yyy/git/libexec/git-core/git-svn line 5114
truy vấn phụ 2: không thể tìm nạp một tệp thông qua git svn?
Tôi thấy rằng [tập lệnh này] (https://github.com/mgee/git-svn-ext) hoạt động với các phiên bản SVN và Git hiện tại –
@IvanKoblik cảm ơn vì đã đăng bài đó Mặc dù tôi phải thừa nhận rằng tôi đã từ bỏ việc lưu trữ tất cả các kho lưu trữ đồng bộ thay vì buộc tất cả các đại biểu chỉ sử dụng git: P – stijn
Sau khi sử dụng nó một lúc ngay cả với tập lệnh, Tôi nghĩ rằng git-svn không cắt nó cho kho SVN với externals, sol của bạn ution là tốt nhất có. –