Как Git обрабатывает символические ссылки?

Ну $.each является библиотечной конструкцией, тогда как for ... in является нативной js, что должно быть лучше

1464
задан Peter Mortensen 27 October 2018 в 10:01
поделиться

2 ответа

Git просто сохраняет содержимое ссылки (то есть путь к объекту файловой системы, на который она ссылается) в «blob», как это было бы для обычного файла. Затем он сохраняет имя, режим и тип (включая тот факт, что это символическая ссылка) в объекте дерева, который представляет его содержащий каталог.

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

Если вы удалите файл, на который ссылается символическая ссылка, это никак не повлияет на символическую ссылку, управляемую Git. У вас будет свисающая ссылка. Пользователь может удалить или изменить ссылку, чтобы указать на что-то действительное, если это необходимо.

1267
ответ дан 22 November 2019 в 20:15
поделиться

Примечание редактора: это сообщение может содержать устаревшую информацию. См. Комментарии и этот вопрос относительно изменений в Git, начиная с 1.6.1.

Символьные каталоги:

Важно отметить, что происходит, когда есть каталог, который является мягкой ссылкой. Любой запрос Git с обновлением удаляет ссылку и делает ее обычным каталогом. Это то, чему я научился на собственном горьком опыте. Некоторые идеи здесь и здесь.

Пример

До

 ls -l
 lrwxrwxrwx 1 admin adm   29 Sep 30 15:28 src/somedir -> /mnt/somedir

git add / commit / push

It remains the same

После git pull И обнаружены некоторые обновления

 drwxrwsr-x 2 admin adm 4096 Oct  2 05:54 src/somedir
147
ответ дан 22 November 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: