2011-01-04 53 views
54

Tôi đã viết một móc nối sau tùy chỉnh của riêng mình, bây giờ tôi đã thêm một thư mục "hooks" vào thư mục dự án chính của tôi (vì git không theo dõi các thay đổi trong .git/hooks) đọc mà tôi có thể làm cho một liên kết tượng trưng từ móc để .git/móc vì vậy tôi không cần phải sao chép các tập tin từ một thư mục để người kia mỗi khi ai đó thay đổi nó vì vậy tôi cố gắng:Liên kết tượng trưng đến một cái móc trong git

ln -s -f hooks/post-merge .git/hooks/post-merge

Nhưng nó dường như không hoạt động, bất kỳ ý tưởng tại sao? "Móc ln/post-merge .git/móc/sau hợp nhất" hoạt động tốt nhưng thực hiện một liên kết cứng là giống như copyin Tôi đoán ....

+15

Vì liên kết tượng trưng được giải quyết tương đối so với vị trí của nó. Một liên kết tượng trưng trong '.git/hooks /' trỏ đến 'hooks/post-merge' được giải quyết thành' .git/hooks/hooks/post-merge', không tồn tại. Bạn muốn 'ln -s -f ../../hooks/post-merge .git/hooks/post-merge'. Hoặc làm cho cuộc sống của bạn dễ dàng hơn: 'ln -s -f ../hooks .git/hooks'. Vấn đề của bạn không liên quan gì đến git. –

+1

http://stackoverflow.com/questions/3462955/putting-git-hooks-into-repository và http://stackoverflow.com/questions/427207/can-git-hook-scripts-be-managed-along-with -the-repository (và http://stackoverflow.com/questions/3703159/git-remote-shared-pre-commit-hook) chỉ ra thực tế là symlink có thể hoạt động. – VonC

Trả lời

123

bạn chỉ cần sử dụng sai con đường, nó phải là:

ln -s -f ../../hooks/post-merge .git/hooks/post-merge 
+7

Tôi không hiểu tại sao tôi cần phải đi lên hai thư mục để liên kết một tài nguyên sống trong thư mục tôi đã 'cd''d vào. Không phải nó chỉ là 'ln -s./Hooks /'? – Droogans

+27

Điều này. Khi git đang đánh giá liên kết tượng trưng, ​​có vẻ như nó sử dụng '.git/hooks' làm thư mục làm việc của nó, vì vậy các đường dẫn tương đối nên liên quan đến thư mục đó. Điều này là tự giải thích hơn nếu bạn lần đầu tiên 'cd' vào' .git/hooks' trước khi tạo liên kết tượng trưng và tìm ra đường dẫn tương đối từ đó. – Eliot

+10

@Không sáng tạo cũng như độ phân giải của các liên kết tượng trưng bị ảnh hưởng bởi thư mục làm việc. Bất cứ điều gì bạn cung cấp cho 'ln' sẽ được lưu trữ như là đích và được giải quyết tương đối so với vị trí của liên kết. –

2

Thay đổi thư mục trước khi nối

cd /path/to/project-repo/.git/hooks 
ln -s -f ../../hooks/post-merge ./post-merge 
1

tại sao không chỉ cp ./hooks/* .git/móc/

này làm việc cho tôi trong mac os

+6

Vì 'Tôi không phải sao chép tệp từ thư mục này sang thư mục khác mỗi lần ai đó thay đổi' –

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