Có cách Python nào không sử dụng một tiến trình con để sao chép kho lưu trữ git không? Tôi đang sử dụng bất kỳ loại mô-đun nào bạn đề xuất.Cách Python để sao chép kho lưu trữ git
Trả lời
Có http://gitorious.org/git-python/. Đã không nghe nói về nó trước và trong nội bộ, nó dựa vào việc thực thi git ở đâu đó; ngoài ra, chúng có thể có nhiều lỗi. Nhưng nó có thể là giá trị một thử.
Làm thế nào để sao chép:
import git
git.Git("/your/directory/to/clone").clone("git://gitorious.org/git-python/mainline.git")
(. Đó không phải là tốt đẹp và tôi không biết nếu nó là cách hỗ trợ để làm điều đó, nhưng nó làm việc)
Với Dulwich mẹo mà bạn nên có thể làm:
from dulwich.repo import Repo
Repo("/path/to/source").clone("/path/to/target")
Điều này vẫn còn rất cơ bản - nó sao chép qua các đối tượng và refs, nhưng chưa tạo nội dung của cây đang hoạt động nếu bạn tạo kho lưu trữ không trống.
Sử dụng GitPython sẽ cung cấp cho bạn giao diện trăn tốt cho Git.
Ví dụ, sau khi cài đặt nó (pip install gitpython
), cho nhân bản một kho lưu trữ mới, bạn có thể sử dụng clone_from chức năng:
from git import Repo
Repo.clone_from(git_url, repo_dir)
Lưu ý: GitPython đòi hỏi git đang được cài đặt trên hệ thống, và truy cập qua PATH hệ thống .
Đã không làm việc cho tôi vì "pip install gitpython" không cài đặt phiên bản mới nhất, thay vì cài đặt 1.7 mà không có clone_from. Xin lỗi cho downvote, b: (của tôi: – blented
@blented Cảm ơn đã đề cập đến, nhưng tiếc là do phiên bản GitPython của chúng tôi (1.7 đã quá cũ). 'pip install gitpython == 0.3.2.RC1' thay vào đó! –
@AmirAliAkbari 0.3.2 RC1 hiện là ứng cử viên cài đặt mặc định. – Kasisnu
Giải pháp của tôi rất đơn giản và thẳng về phía trước. Nó thậm chí không cần mục nhập bằng tay của diễn giải/mật khẩu.
Dưới đây là mã hoàn chỉnh của tôi:
import os
import sys
path = "/path/to/store/your/cloned/project"
clone = "git clone [email protected]:/your/project/name.git"
os.system("sshpass -p your_password ssh [email protected]_localhost")
os.chdir(path) # Specifying the path where the cloned project has to be copied
os.system(clone) # Cloning
print "\n CLONED SUCCESSFULLY.! \n"
- 1. Cách chọn lọc sao chép kho lưu trữ git
- 2. Làm thế nào để sao chép kho lưu trữ git-style git?
- 3. Git, xóa kho lưu trữ
- 4. Làm cách nào để sao chép thư mục từ kho lưu trữ git này sang kho lưu trữ git khác, lưu giữ lịch sử?
- 5. Làm cách nào để sao chép kho lưu trữ git và giữ điều khiển từ xa?
- 6. Làm cách nào để sao chép/sao chép kho lưu trữ git mà không lãng phí dung lượng?
- 7. Cách lấy/sao chép chi nhánh git từ xa vào kho lưu trữ cục bộ
- 8. Làm thế nào để sao chép kho lưu trữ git từ xa bằng Android Studio?
- 9. Tại sao tôi không thể sao chép bất kỳ kho lưu trữ nào trong Git?
- 10. Tạo kho lưu trữ git chứa một kho git khác
- 11. git kho lưu trữ nhân bản kho
- 12. đặt kho lưu trữ ftp bằng git
- 13. Git sao chép phiên bản cụ thể của kho lưu trữ từ xa
- 14. Kho lưu trữ bản sao JGit
- 15. Lỗi sao chép xung đột Git khi nhân bản một kho lưu trữ
- 16. Cách sao chép kho lưu trữ đến một máy chủ/kho lưu trữ từ xa với Mercurial
- 17. Tôi có thể sao chép một kho lưu trữ git vào Windows không?
- 18. Làm thế nào để sao chép một kho lưu trữ Subversion với "GitHub cho Windows"?
- 19. Làm cách nào để sao chép kho lưu trữ Git lớn trên một kết nối không đáng tin cậy?
- 20. Biểu tượng kho lưu trữ Git
- 21. Quản lý nhiều kho lưu trữ git
- 22. pip cài đặt kho lưu trữ git cục bộ
- 23. Xóa kho lưu trữ git trên Bitbucket?
- 24. Được sao chép cách duy nhất để lấy nội dung của một kho lưu trữ Mercurial?
- 25. Có cách nào để sao chép kho lưu trữ từ web theo từng bước không?
- 26. git khi thay đổi kho lưu trữ
- 27. Git kho lưu trữ tương thích ngược
- 28. Đẩy vào kho lưu trữ git được lưu trữ cục bộ qua HTTP
- 29. Sử dụng kho lưu trữ Git cục bộ với kho lưu trữ Subversion chính
- 30. Các kho lưu trữ git lồng nhau?
gitpy, tôi đoán nó sẽ được gọi là – SilentGhost
@SilentGhost: bạn có ý nghĩa * * gitpy này? http://github.com/vmalloc/gitpy từ http://www.ryaari.com/blog/?p=9 – VonC
Có vẻ như có GitPython (http://pypi.python.org/pypi/GitPython, http: //gitorious.org/git-python) mà tôi không nghĩ rằng có một phương pháp sao chép, nhưng tôi sẽ đặt cược bạn có thể thêm một ... nội bộ nó sẽ phải gọi 'git clone' anyway. – Cascabel