threads / bug / 37246

Bug report about symlinks

Subject: Bug report about symlinks

## tl;dr

2 messages between Jul 30, 2014 and Aug 1, 2014.

replies: 1people: 2as markdown or json

NickKolok· Jul 30, 2014, 11:30 UTC · lore
 Greetings from Russia, comrads!

I've noticed something strange with git status when replacing a folder with symlink to another folder. There is a git repo with script with demo in the attachment.

Yours sincerely, NickKolok aka Nikolay Avdeev.

Доброго времени суток, товарищи!

При замене папки на симлинк на другую папку с похожими, но не одинаковыми файлами git status ведёт себя странно. Прилагаю архив с репозиторием. В скрипте - пример и пояснения.

С уважением, Николай Авдеев aka NickKolok.

Dennis Kaarsemaker· Aug 1, 2014, 19:10 UTC · re: NickKolok · lore

Re: Bug report about symlinks

On wo, 2014-07-30 at 15:30 +0400, NickKolok wrote:
> Greetings from Russia, comrads!
> 
> I've noticed something strange with git status when replacing a folder with symlink to another folder.
> There is a git repo with script with demo in the attachment.
I think there is a bug here:
+ mkdir bug
+ cd bug
+ git init
Initialized empty Git repository in /tmp/bug/.git/
+ mkdir dir1 dir2
+ echo 1
+ echo 1
+ echo 2a
+ echo 2b
+ git add dir1/1.txt dir1/2.txt dir2/1.txt dir2/2.txt
+ git commit -m first
[master (root-commit) b60ecc8] first
 4 files changed, 4 insertions(+)
 create mode 100644 dir1/1.txt
 create mode 100644 dir1/2.txt
 create mode 100644 dir2/1.txt
 create mode 100644 dir2/2.txt
+ rm -r dir2
+ ln -s dir1 dir2
+ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working
directory)
	deleted:    dir2/2.txt
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	dir2
no changes added to commit (use "git add" and/or "git commit -a")

It looks like git status is thinking dir2/1.txt still exists with the same content, even though dir2 is gone, and now an untracked symlink.

Moreover, git diff and git status disagree with each other:
dennis@spirit:/tmp/bug$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working
directory)
	deleted:    dir2/2.txt
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	dir2

no changes added to commit (use "git add" and/or "git commit -a") dennis@spirit:/tmp/bug$ git --no-pager diff

diff --git a/dir2/1.txt b/dir2/1.txt
deleted file mode 100644
index d00491f..0000000
--- a/dir2/1.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/dir2/2.txt b/dir2/2.txt
deleted file mode 100644
index b8a4cf4..0000000
--- a/dir2/2.txt
+++ /dev/null
@@ -1 +0,0 @@
-2b
-- 
Dennis Kaarsemaker
www.kaarsemaker.net

← back to recent threads