Bạn chỉ đang tìm kiếm git-svn
? Bởi phụ thuộc vào bạn có nghĩa là phiên bản mẹ là trong svn, hoặc nó có nhà cung cấp là các dự án svn?
Giả sử phụ thuộc vào bạn có nghĩa là phụ thuộc:
Bạn có thể đặt bất kỳ loại repo nào trong kho git mà không gặp vấn đề gì. ví dụ
$ mkdir ~/project
$ cd ~/project
$ git init
$ ...
$ git commit -va
[master (root-commit) xxxxxxx] Did something
...
$ mkdir vendors
$ cd vendors
$ svn checkout svnproject(url)
$ cd svnproject
$ ...
$ svn ci -m "committing to svnproject"
Vân vân.
Và sau đó quản lý svnproject
như bạn thường làm. Tất nhiên bạn có thể sử dụng git-svn
thay vì tương tác với repo svn của bạn bằng lệnh git.
Bạn cũng có thể làm điều này:
$ cd ~/projects
$ git add vendors/svnproject
$ git commit -m "adding svnproject source to main repo"
Trong trường hợp đó, các cập nhật bạn thực hiện cho các tệp trong svnproject
sẽ hiển thị dưới dạng cả svn và git diff. Một ví dụ trong đó /tmp/gitproject
là một dự án .. git và /tmp/gitproject/vendor/minify
là một kiểm tra svn (ngẫu nhiên):
[andy@laptop:/tmp/gitproject/vendor/minify]$ vim README.txt
[andy@laptop:/tmp/gitproject/vendor/minify]$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
[andy@laptop:/tmp/so/vendor/minify]$ svn status
M README.txt
[andy@laptop:/tmp/so/vendor/minify]$
Nếu bạn sử dụng git-svn
để tương tác với kho lưu trữ phụ thuộc svn của mình, có thể giữ đồng bộ hóa với các thay đổi bạn đã thực hiện trong dự án git cha mẹ bằng cách sử dụng git-filter-branch
và do đó không cần phải cam kết với từng kho lưu trữ riêng lẻ.
Bên cạnh đó: từ kinh nghiệm giữ một dự án git và svn đồng bộ thường khá có vấn đề trừ khi cái này hoặc cái kia chỉ đọc.