2011-02-04 36 views
10

Trong một thời gian tôi chỉ có mã của tôi dưới sự kiểm soát nguồn, nhưng tôi quyết định sẽ rất tuyệt khi đặt những thứ như nội dung của tôi vào thư mục .vim của tôi trong số những thứ khác trong repo. (Tôi rõ ràng sẽ không lưu trữ mọi thứ trong repo của tôi, chỉ là các tệp cấu hình khác nhau, thư mục src của tôi và có thể một vài thứ khác nữa)Đặt thư mục gốc dưới sự kiểm soát nguồn (hg)

Tôi đã có thể thiết lập một repo, sau đó đẩy nó vào máy chủ của tôi, nơi tôi có thể truy cập nó từ các máy tính khác của mình, nhưng tôi không thể sao chép nó vào các máy tính khác của mình. Khi tôi cố gắng sao chép nó, nó không thành công vì thư mục chính không trống. Có cách nào để làm những gì tôi muốn ở đây không?

Trả lời

8

Kể từ khi các tập tin phiên bản giữa các máy tính của tôi là như nhau, những gì tôi đã làm là:

~$ hg clone ssh://myserver/hg/dotfiles mydotfiles 
~$ mv mydotfiles/.hg . 
~$ rm -rf mydotfiles 

và đó là nó, bây giờ thư mục nhà của bạn là dưới sự kiểm soát phiên bản, nhưng tất nhiên nếu các tập tin dấu chấm của bạn không giống nhau giữa các máy tính, bạn sẽ phải làm điều gì đó về nó.

Kể từ khi tôi chỉ muốn phiên bản một số tập tin và không phải mọi thứ trong thư mục nhà của tôi, tôi có quy tắc này đơn giản trong ~/.hgignore

# This .hgignore is for the dotfiles repository only, 
# the rest of my HG repositories use the file 
# .hgignore_global as referenced by [ui]'s ignore setting. 

syntax:glob 
* 

Bằng cách này tôi không nhận được một đại dương các tập tin khi tôi làm hg status và chỉ thấy những tệp mà tôi có trong điều khiển phiên bản đã được sửa đổi.

Nhưng kể từ khi tôi muốn xem các tập tin không phiên bản khi làm việc trong kho hg khác, tôi có điều này trong tập tin ~/.hgrc tôi

[ui] 
ignore=/home/gajon/.hgignore_global 

~/.hgignore_global chứa một số bộ lọc cho các tập tin tạm thời chung:

syntax: glob 
*.pyc 
*~ 
.*.swp 
.svn* 
*.svn* 
*.fasl 

syntax: regexp 
^\.pc/ 
+2

một tùy chọn khác là 'hg init' và 'hg pull' thay vì sao chép. –

+0

Ry4an, bạn đã đúng. Và điều đó có thể phù hợp hơn; không cần phải tạo một thư mục chứa các tập tin và sau đó 'rm -rf'ing nó. Cảm ơn! –

0

Trong các thư mục khác đã tồn tại, bạn có thể hg init, hg add những gì bạn muốn, hg commit rằng, hg pull từ repo trung tâm và xử lý kết quả kết hợp.

+2

Có bạn đã thử cái này chưa? Nó sẽ chỉ hoạt động nếu bạn buộc kéo. Cá nhân, tôi nghĩ rằng 'sao chép thư mục .hg' là một câu trả lời 'sạch hơn' – Mikezx6r

1

Giả sử bạn có proj1proj2. proj1 là một repo mercurial bạn muốn sao chép đến proj2, nhưng proj2 đã có các tệp trong đó.

Hãy thử điều này:

hg clone proj1 proj3 
mv proj3/.hg proj2 
rmdir proj3 
cd proj2 
hg update -C -r tip 
+0

Bạn có thể bỏ qua tùy chọn '-r tip' của lệnh cuối cùng - cập nhật sẽ thay đổi * tip * thành mặc định. –

Các vấn đề liên quan