Sự cốSử dụng Git làm cầu nối giữa Git và SVN Repos?
Nhóm của tôi sử dụng git để kiểm soát nguồn trên bitbucket, khách hàng của chúng tôi sử dụng Subversion trong nhà. Làm thế nào nhóm của chúng tôi có thể tiếp tục sử dụng git trong khi có mã kiểm tra vào Subversion? Và, không, tôi không nghĩ git-svn sẽ hoạt động.
Yêu cầu
Đội tuyển của tôi muốn sử dụng một giải pháp git tinh khiết, không git-svn. Lý do cho điều này là khách hàng của chúng tôi đã cấp cho chúng tôi quyền truy cập vào môi trường svn của họ chỉ trong mạng LAN văn phòng của chúng tôi; chúng tôi không thể cam kết svn khi làm việc ra khỏi văn phòng.
Cách tiếp cận của tôi
Tôi nghĩ rằng tôi có thể kiểm tra các kho subversion sử dụng git-svn, sau đó thêm dụ bitbucket git của chúng tôi như một điều khiển từ xa để kho svn git-bọc cùng. Một công việc cron sau đó có thể làm git pull
từ repo bitbucket của chúng tôi, sau đó thực hiện một git svn dcommit
để đẩy các thay đổi trong bitbucket đến kho lưu trữ lật đổ của ứng dụng khách của chúng tôi.
Đây là vấn đề vì lý do git sẽ luôn cho thấy tôi là 'x' số phiên bản trước kho lưu trữ git bitbucket sau khi quá trình kéo, svn dcommit kết thúc.
Trong khi không có gì lạ bên ngoài đang xảy ra, tại một số điểm tôi tự tin khách hàng của chúng tôi sẽ bắt đầu thực hiện đăng ký vào kho lưu trữ lật đổ của họ mà tôi sẽ phải cuối cùng đẩy vào trường hợp bitbucket của chúng tôi.
Chi tiết kỹ thuật
Dưới đây là một loạt sơ bộ bước tôi đã sử dụng để cố gắng làm việc này:
git svn clone -s http://svn.my-client.us/my-proj/
cd my-proj
git remote add origin path-to-bitbucket-repo
git fetch origin
git checkout -b develop remotes/develop
git branch --set-upstream develop origin/develop
git pull
#add merge comment here
git svn rebase
git svn dcommit #takes a while to transfer all the individual commits
Sau khi tất cả các bên trên, thực hiện git status
:
[[email protected] myDir]$ git st
# On branch develop
# Your branch is ahead of 'origin/develop' by 59 commits.
#
nothing to commit (working directory clean)
Vì tôi cần có khả năng thực hiện đăng ký từ bất kỳ địa điểm nào, không chỉ trong khi tôi đang ở văn phòng, có bất kỳ địa điểm nào không trategy để sử dụng nó như là cầu nối để làm điều này?
Cảm ơn!