Tôi đang đấu tranh về cách theo dõi chính xác kho lưu trữ lồng nhau bằng cách sử dụng TortoiseHg.Cách chính xác để xử lý kho lưu trữ lồng nhau Hg với Mercurial/TortoiseHg là gì?
Tôi có một kho lưu trữ chính theo dõi toàn bộ dự án của mình. Dự án này chứa một vài plugin nhỏ được lưu trữ bên trong một plugins/thư mục con.
Tôi rất muốn theo dõi từng plugin một cách độc lập (cam kết và đẩy vào BitBucket cho mỗi người) trong khi vẫn có thể thực hiện cam kết "toàn bộ" cho dự án của tôi, bao gồm các thay đổi được thực hiện cho plugin và đẩy nó vào một vị trí khác (không phải BitBucket).
Điều tôi đã làm từ trước đến nay là tạo một repo mới cho từng plugin của tôi. Tôi có thể cam kết và đẩy chúng vào BitBucket dễ dàng. Nhưng khi tôi đã cam kết kho lưu trữ "chính" của mình, TortoiseHg hiển thị thông báo lỗi nói rằng abort: path 'mainrepo\\plugins\\plugin1\\plugin1.php' is inside repo 'mainrepo\\plugins\\plugin1'
.
Tôi có thể thấy rằng tôi đang làm điều gì đó sai, nhưng tôi không thể nói gì.
Tôi đang sử dụng một đêm của cả Mercurial và TortoiseHg (ToirtoiseHg phiên bản 0.9.3 + 237-ea50f793bbe4 và Mercurial-1.4.3 + 225-70dea42c9406) trên WinXP. Tôi đọc rằng xử lý subrepos đã được thêm vào xây dựng TortoiseHg này, nhưng, tốt, tôi thậm chí không chắc chắn subrepos là tính năng tôi phải sử dụng ở đây.
Cập nhật
Tôi đã thực hiện một số tiến bộ, nhưng vẫn không thể làm cho nó hoạt động theo cách mình muốn.
Dưới đây là cấu trúc của tôi:
-- .hg
-- core
-- app
-- file.php
-- file.css
-- plugins
-- plugin1
-- file1.php
-- plugin2
-- file2.php
tôi đến ứng dụng/plugins, và nhân bản một plugin (tên plugin3) từ BitBucket đây. Sau đó tôi đã tạo một tệp .hgsub ở gốc và thêm app/plugins/plugin3 = app/plugins/plugin3
vào nó. Sau đó tôi có thể cam kết toàn bộ thư mục của mình.
Nhưng sau đó tôi đã cố gắng lấy phiên bản mới nhất của plugin1 từ BitBucket, vì vậy tôi đã chuyển đến ứng dụng/plugin, xóa plugin1/thư mục và nhân bản plugin1 từ BitBucket. Sau đó tôi thêm app/plugins/plugin1 = app/plugins/plugin1
vào .hgsub nhưng khi tôi cố gắng cam kết, tôi đã được chào đón với abort: path 'app/plugins/plugin1/file1.php' is inside repo 'app\\plugins\\plugin1'
Sự cố có vẻ như khi thư mục con của tôi giữ cùng tên với thư mục đã được Hg theo dõi trong thư mục/plugin.
Tôi đang làm gì sai? Tôi có nên thêm/chỉnh sửa nội dung nào đó đặc biệt trong plugin của tôi không?
Cập nhật
Cuối cùng tôi đã cố gắng làm cho nó hoạt động theo cách mình muốn.
Tôi đã phải "thủ công" để nói với Mercurial xóa các plugin/plugin1, plugins/plugin2 thư mục, cam kết thay đổi, sau đó sao chép lại plugin1 và plugin2 từ BitBucket, thêm app/plugins/plugin1 = app/plugins/plugin1
vào .hgsub và cam kết tất cả. Nó đã làm việc.
Bước quan trọng là cam kết sau khi xóa các thư mục plugin1/plugin2.
Từ tài liệu, dòng có '.hgsub' là" Đường dẫn đầu tiên "là đường dẫn trong thư mục làm việc của chúng tôi và đường dẫn thứ hai là URL hoặc đường dẫn để kéo từ": vì vậy bạn không nên đặt ' ứng dụng/plugins/plugin3 = app/plugins/plugin3' nhưng 'app/plugins/plugin3 = url bitbucket cho plugin3'. Ditto cho plugin1 – VonC
Tôi đã thử rằng, bằng cách sử dụng 'http: // bitbucket.org/username/plugin3 /', 'https: // tên người dùng @ bitbucket.org/username/plugin3 /' và thậm chí 'ssh: // hg @ bitbucket.org/username/plugin3' dưới dạng url nhưng vẫn có cùng thông báo hủy. Tôi đã alos đã thử trực tiếp từ dòng lệnh, và kết quả là như nhau. – pixelastic
xin lỗi vì đã không trả lời nhận xét cuối cùng của bạn, nhưng trừ khi nhận xét của bạn bắt đầu bằng '@VonC', tôi sẽ không được thông báo. Xem http://blog.stackoverflow.com/2010/01/new-improved-comments-with-reply/ (phần "Comment @username Notifications") – VonC