Як я можу змусити файли git фіксувати файли у папці з посиланням


20

У мене є дві папки:

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

У /home/me/code/projectпапці я посилався staticна/srv/www/projectfiles/

тобто /home/me/code/project/static/->/srv/www/projectfiles/

Коли я намагаюсь здійснити фіксацію зараз, він не бачить жодного з файлів за символьною посиланням, а натомість намагається зафіксувати саме посилання як файл.

Як зафіксувати файл (наприклад /srv/www/projectfiles/style.css) s, який знаходиться за символьною посиланням?

Відповіді:


12

Приблизним рішенням буде / srv / www / projectfiles бути символьним посиланням на / home / me / code / project / static, щоб git не бачив ніяких посилань


Отже, ви в основному змінюєте логіку? Збережіть потрібні файли / папки в папці Git, а потім покладіть симпосилання в інше місце (де оригінальні файли / папки, які використовувались для проживання)?
RusI

@Rusl Так точно
користувач151019

Але як я можу зробити локальну настройку файлів? Я повинен мати окремий репо для кожної машини? Втрачає цілий бал.
Ашнур

Добре, що локальне налаштування не буде в git
user151019

4

Якщо ви використовуєте Linux, мені особливо подобається рішення, яке надає GitBLSR . Це бібліотека, що завантажується через LD_PRELOAD, яка прозоро перенаправляє символи до файлів і папок поза сховищем.

Встановити його для локального облікового запису користувача просто:

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

Це складе бібліотеку і створить псевдонім на зразок наступного в ~/.bashrc:

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

Використання цього псевдоніма дає можливість прозорої перенаправлення посилання.


1
Це жахливо! Але це працює чудово, тому чудово. Дякую!
розчарувався Кей в SE

Це дивно! Я просто люблю це
Маркос Бестейро Лопес

2

Розгляньте можливість використання точки монтажу для монтажу цільової папки (до якої ви зараз посилаєтесь), щоб відобразитись у тому місці, яке ви хочете, під проектом git. Я успішно використовував цей підхід.


1

Перемістіть файли в папку та видаліть посилання. Git не обминає символів.

Це (і я) припускає, що ви посилаєтесь на набір файлів, які ви або не керуєте, або не хочете змінювати, тому що такі не потребують версій.


1
Я контролюю ці файли. Вони є таблицями стилів і т. Д., І вони повинні знаходитися в каталозі, в якому буде працювати сервер.
Macha

1

Ще одне вирішення - єдиний, який я виявив, що теж працює для каталогів - це змінити робоче дерево git для конкретних дій.

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/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.