Làm cách nào để tạo tệp cam kết git trong thư mục được liên kết


19

Tôi có hai thư mục:

  • /home/me/code/project/
  • /srv/www/projectfiles/

Trong /home/me/code/projectthư mục, tôi đã liên statickết với/srv/www/projectfiles/

tức là /home/me/code/project/static/->/srv/www/projectfiles/

Khi tôi cố gắng cam kết ngay bây giờ, nó không thấy bất kỳ tệp nào phía sau symlink, và thay vào đó cố gắng tự cam kết symlink như một tệp.

Làm cách nào để tôi cam kết một tệp (ví dụ /srv/www/projectfiles/style.css) đằng sau symlink?

Câu trả lời:


12

Một cách giải quyết sẽ là / srv / www / projectfiles là một liên kết tượng trưng đến / home / me / code / project / static để git không thấy liên kết tượng trưng


Vì vậy, về cơ bản bạn đang đảo ngược logic? Giữ các tệp / thư mục cần thiết trong thư mục Git và sau đó đặt một liên kết tượng trưng ở nơi khác (nơi các tệp / thư mục gốc được sử dụng để cư trú)?
RusI

@Rusl Có chính xác điều đó
user151019

Nhưng làm thế nào tôi có thể tùy chỉnh cục bộ các tập tin? Tôi nên có repo riêng cho mỗi máy? Mất toàn bộ điểm.
Ashnur

Vâng, tùy chỉnh cục bộ sẽ không có trong git
user151019

3

Nếu bạn đang sử dụng linux, tôi đặc biệt thích giải pháp được cung cấp bởi GitBLSR . Đó là một thư viện được tải thông qua LD_PRELOAD, trong đó các liên kết tượng trưng cho các tệp và thư mục bên ngoài một kho lưu trữ.

Để cài đặt nó cho một tài khoản người dùng cục bộ rất đơn giản:

git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh

Điều này sẽ biên dịch thư viện và tạo một bí danh như sau ~/.bashrc:

alias git="LD_PRELOAD=/path/to/gitbslr.so git"

Sử dụng bí danh này cho phép hội thảo liên kết minh bạch.


1
Đó là khủng khiếp! Nhưng nó hoạt động tốt, vì vậy nó là tuyệt vời. Cảm ơn bạn!
kay thất vọng vào

Lạ nhỉ! Tôi hoàn toàn thích nó
Marcos Besteiro López

2

Cân nhắc sử dụng điểm gắn kết để gắn thư mục đích (mà hiện tại bạn đang liên kết tượng trưng) để xuất hiện ở vị trí bạn muốn bên dưới dự án git. Tôi đã sử dụng phương pháp này thành công.


1

Di chuyển các tập tin vào thư mục và loại bỏ liên kết tượng trưng. Git không truyền tải liên kết.

Nó (và tôi) sẽ cho rằng bạn đang liên kết với một tập hợp các tệp mà bạn không kiểm soát hoặc không muốn sửa đổi, vì vậy chúng không cần phải được phiên bản.


1
Tôi kiểm soát các tập tin này. Chúng là các bảng định kiểu, v.v. và cần phải nằm trong một thư mục mà máy chủ sẽ phục vụ.
Macha

1

Một cách giải quyết khác - người duy nhất tôi thấy cũng hoạt động cho các thư mục - là thay đổi cây làm việc git cho các hành động cụ thể.

git --work-tree=/home/me/code/project/ add /home/me/code/project/static/
git --work-tree=/home/me/code/project/ commit /home/me/code/project/static/
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.