Bitbucket không thực hiện subrepos tại chỗ. Kết quả là, Mercurial đang cố gắng đẩy tất cả các kho của bạn đến cùng một vị trí, và than phiền khi bạn cố gắng đẩy Repo SubFolder2 vào một bản sao từ xa của repo SubFolder1.
Các bản tóm tắt là các thư viện được chia sẻ giữa nhiều dự án và do đó không sống trong bất kỳ repo chính nào mà thay vào đó là không gian riêng của chúng. Do đó, bạn phải tạo các kho lưu trữ từ xa riêng biệt để chứa từng thư mục con (thư viện) và tham chiếu đến đường dẫn từ xa riêng biệt trong tệp .hgsub.
Ví dụ, dự án ví dụ của bạn có thể có ba kho bitbucket chủ trì
https://bitbucket.org/bitbucketname/main_project
https://bitbucket.org/bitbucketname/library1
https://bitbucket.org/bitbucketname/library2
Bạn muốn filespace bản sao địa phương của bạn trông như thế này:
/MainFolder/
/MainFolder/SubFolder1
/MainFolder/SubFolder2
Trong bản sao địa phương của bạn của main_project (MainFolder), đặt đường dẫn mặc định của kho lưu trữ gốc thành https://bitbucket.org/bitbucketname/main_project
tức là, /MainFolder/.hg/hgrc
chứa
[paths]
default = https://bitbucket.org/bitbucketname/main_project
Bây giờ, chỉ ra đường dẫn từ xa của thư mục con/thư viện trong tệp .hgsub. Định dạng chung của.mục hgsub là:
local/path/to/subrepo = remote/path/to/matching/library
Vì vậy .hgsub của bạn có thể chứa đường dẫn tương đối địa phương và từ xa (liên quan đến vị trí của repo chính tại địa phương hoặc từ xa, như trường hợp cụ thể):
SubFolder1 = ../library1
SubFolder2 = ../library2
hoặc đường dẫn địa phương tương đối với đường dẫn tuyệt đối để repo từ xa của mỗi thư viện:
SubFolder1 = https://bitbucket.org/bitbucketname/library1
SubFolder2 = https://bitbucket.org/bitbucketname/library2
hoặc tuyệt đối đường dẫn cho tất cả mọi thứ:
012.351.
/MainFolder/SubFolder1 = https://bitbucket.org/bitbucketname/library1
/MainFolder/SubFolder2 = https://bitbucket.org/bitbucketname/library2
Bây giờ, khi bạn đẩy từ dự án chính tại địa phương, Mercurial biết chính xác nơi để tìm tất cả các subrepositories (cục bộ) và nơi để đẩy các thay đổi được thực hiện cho mỗi thư viện (từ xa).
Ngoài ra, giả sử bạn muốn thêm thư viện của người khác vào dự án của bạn. Sau đó .hgsub của bạn có thể trông giống như thế này:
SubFolder1 = ../library1
SubFolder2 = ../library2
another_library = https://bitbucket.org/honkaboy/honkaboys_excellent_library
Tôi cũng đã cố gắng sử dụng [subpath] như trong ví dụ cho subrepository tại [link] (https://bitbucket.org/kiilerix/subrepodemo/). Tôi đã thêm vào sau để kết thúc tệp .hgsub của tôi: (https: // (?: [^ @] + @)? Bitbucket \ .org/[^ /] +/[^ /] +)/(. *) = \ 1- \ 2 Điều này không hoạt động vì kho lưu trữ không tồn tại đối với giao diện người dùng thay thế. Có cách nào khác để làm điều này mà không cần đổi tên tất cả các kho của tôi để phù hợp với biểu thức chính quy. Cũng vì đây là kho lưu trữ riêng bitbucket thêm tên người dùng vào liên kết được định dạng và nó không thành công cho người dùng khác. – samirjaiswal