Điều gì sẽ là cách tốt nhất để thiết lập máy nhân bản git chỉ đọc của một kho lưu trữ svn hiện có và thiết lập các móc hậu cam kết sao cho bất cứ khi nào ai đó cam kết với svn, git gương được tự động cập nhật? Chủ yếu, tôi muốn chạy bản sao git-svn chỉ một lần, trên máy chủ, và sau đó cho phép mọi người chỉ cần kiểm tra từ git mà không cần phải git-svn sao chép toàn bộ kho svn.Chỉ đọc git mirror của một kho svn
Trả lời
Tôi làm điều đó trên một dự án sử dụng SVN (đẩy vào kho lưu trữ công cộng trên github). Tôi không có một móc nối SVN, nhưng điều này trên một công việc cron:
#!/bin/bash
repo=/path/to/my-mirror.git
lockfile="$repo/cron-lock"
if ! lockfile -r1 "$lockfile";then
exit 1
fi
export GIT_DIR=$repo
# update refs/remotes/git-svn:
git svn fetch -q
# make 'master' match the git-svn branch:
git fetch "$repo" refs/remotes/git-svn:refs/heads/master
# publish to github
git push github master
rm -f "$lockfile"
Nếu bạn kích hoạt này từ một móc nối SVN thay vì một công việc định kỳ, nó sẽ hoạt động.
Tất nhiên, bạn cần thiết lập điều khiển từ xa được gọi là github
sử dụng git remote add github [...]
. Kho lưu trữ git mà tôi đang sử dụng là kho lưu trữ "trống" (xem git init --bare
).
Cách tốt nhất để thiết lập gương Svn/Git (có thể ghi) sẽ là sử dụng SubGit - đây là công cụ được phát triển đặc biệt cho tác vụ này. Disclaimer: Tôi là nhà phát triển của công cụ này.
đẹp, nhờ –
Bên cạnh đó, SubGit 2.0 không còn cần quyền truy cập cục bộ vào kho lưu trữ Subversion và có thể xây dựng một gương Git có thể ghi được từ kho lưu trữ Subversion từ xa nữa (xem http: // subgit.com/eap). –
@AlexanderKitaev Xin lưu ý rằng bạn phải tiết lộ liên kết của mình khi liên kết với một sản phẩm hoặc một trang web khác. Tôi thấy từ [bài đăng này] (http://stackoverflow.com/a/13288270/2057919) mà bạn đã phát triển SubGit. Tôi đã chỉnh sửa câu trả lời này để phản ánh điều đó. Trong tương lai, hãy chắc chắn đề cập đến kết nối của bạn nếu bạn liên kết với SubGit. –
- 1. Cập nhật một gương git của một kho SVN
- 2. Git push --mirror có đủ để sao lưu kho lưu trữ được sử dụng với git-svn không?
- 3. git svn clone của một thư mục duy nhất của kho SVN
- 4. svn-checkout từ kho GIT
- 5. Xuất kho git sang svn
- 6. Lệnh đơn giản nhất để lấy bản sao chỉ đọc của kho lưu trữ git?
- 7. Có cách nào để "git svn dcommit" từ một kho git-svn nhân bản:
- 8. Đọc kho Git, không có Git
- 9. Có phải "git push --mirror" đủ để sao lưu kho lưu trữ của tôi không?
- 10. Nhiều dự án svn vào một kho lưu trữ git?
- 11. Làm thế nào để giữ một kho lưu trữ git sao lưu đồng bộ với cục bộ, "git push --mirror" hoặc "git remote update"
- 12. git chỉ đẩy một phần của kho lưu trữ
- 13. Thực hiện một dự án git chỉ đọc
- 14. Cách đọc chứng chỉ từ kho chứng chỉ của tôi?
- 15. Nhân bản một kho lưu trữ Svn không chuẩn với Git-Svn
- 16. Chuyển kho lưu trữ Git sang SVN với SubGit
- 17. git clone của cây git-svn?
- 18. áp dụng bản vá svn cho kho git
- 19. Người dùng chỉ đọc một lần cho svn
- 20. Nhiều kho lưu trữ Git cho từng dự án Eclipse hoặc một kho Git
- 21. Truy cập chỉ đọc của kho lưu trữ Subversion
- 22. tạo một bản sao độc lập của kho svn
- 23. Yêu cầu git svn rebase trước git svn dcommit?
- 24. Tạo kho lưu trữ git chứa một kho git khác
- 25. Đối diện với `git push --mirror`? Làm thế nào để lấy lại repo của tôi?
- 26. là gì sự khác biệt giữa --mirror git clone git clone và --bare
- 27. Lỗi Git SVN: quá trình Git bị lỗi trong kho lưu trữ trước đó
- 28. Hooks cho git-svn
- 29. Sử dụng git-svn với một repo hiện có thiếu .git/svn/
- 30. Tạo một kho lưu trữ chỉ đọc với SpringData
cảm ơn, sử dụng github dường như là cách để đi –