Баг или фича? Пути, замененные символическими ссылками, "забыты" git - PullRequest
0 голосов
/ 09 сентября 2010

Я видел ответы на несколько вопросов о git-with-symlinks, но я все еще озадачен этим.

Предположим, я добавил каталоги в репозиторий git, а затем заменил каталог символической ссылкой с тем же именем. Файлы «все еще там» в том смысле, что они имеют тот же путь через символическую ссылку. Однако, поскольку git не переходит по ссылкам, файлы якобы забыты / удалены. Однако об этом ничего не говорится, когда я запускаю «git status».

Я с удовольствием работал, думая, что все в порядке, пока не понял, что файлы считаются удаленными, запустив «git diff».

Таким образом, у меня есть два вопроса: есть ли причина, по которой файлы не будут отображаться в «git status» как удаленные или перемещенные? Кроме того, как я могу получить файлы повторно добавлены?

Для тех, кто не уверен, о чем я говорю, рассмотрите этот пример:


$ git init
$ mkdir path
$ touch path/file
$ git add path
$ git commit -a -m "added file"

Тогда ...


$ git status
# On branch master
nothing to commit (working directory clean)

Тогда ...


$ mv path path2
$ ln -s path2 path
$ git status
# On branch master
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#   path
#   path2/
nothing added to commit but untracked files present (use "git add" to track)

Но ...


$ git diff
diff --git a/path/file b/path/file
deleted file mode 100644
index e69de29..0000000


Спасибо! Том

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

Я бы сказал, что это довольно явно ошибка. Предположительно status использует механизм, отличный от diff, поэтому он небрежно видит, что в path/file нет изменений, и не осознает, что находится за ссылкой. Он прекрасно обрабатывает каталог-> обычные изменения файлов, а также работает, если символическая ссылка не указывает на каталог, содержащий соответствующий файл, так что это именно тот случай. Хороший улов! Возможно, вы захотите сообщить об этом в список рассылки git (git@vger.kernel.org),

0 голосов
/ 10 сентября 2010

Какую версию git вы используете, я использую 1.7.0.4, и я не могу воспроизвести вашу ошибку, по моему тесту он показывает, что исходный файл является заменой типа и что новый файл новый.

http://pastie.org/1149236

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...