git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git-mv redux: there must be something else going on
@ 2010-02-03 18:25 Ron Garret
  2010-02-03 18:48 ` Avery Pennarun
  0 siblings, 1 reply; 20+ messages in thread
From: Ron Garret @ 2010-02-03 18:25 UTC (permalink / raw)
  To: git

Based on my current understanding of git there should be no difference 
between a git mv and a git rm followed by a git add.  But empirically 
there is a difference.  git log --M --follow is able to track files 
through git mvs even if their content changes completely.  Likewise, it 
does *not* track files through rm/add combinations even if the content 
didn't change at all.  (See experiment transcript below.)

So something in my understanding of how git works must be wrong.  Git 
must be keeping a separate record of file renames somewhere.  But where?

Just for the record, I'm not complaining about this behavior.  In fact, 
what git does is exactly what I want.  I just want to understand how it 
works.

Thanks,
rg


---

[ron@mickey:~/devel/gittest]$ cat>file1
1
2
3
4
5
[ron@mickey:~/devel/gittest]$ cat>file2
a
b
c
d
e
[ron@mickey:~/devel/gittest]$ git init
Initialized empty Git repository in /Users/ron/devel/gittest/.git/
[ron@mickey:~/devel/gittest]$ git add file1
[ron@mickey:~/devel/gittest]$ git commit -m 'Add numbers'
[master (root-commit) 54c2e4a] Add numbers
 1 files changed, 5 insertions(+), 0 deletions(-)
 create mode 100644 file1
[ron@mickey:~/devel/gittest]$ git rm file1
rm 'file1'
[ron@mickey:~/devel/gittest]$ git add file2
[ron@mickey:~/devel/gittest]$ git commit -m 'numbers->letters'
[master fe05d12] numbers->letters
 2 files changed, 5 insertions(+), 5 deletions(-)
 delete mode 100644 file1
 create mode 100644 file2
[ron@mickey:~/devel/gittest]$ git log --name-status -M --follow file2
commit fe05d1233be1bb11f4ed0e8496e4191795d515a0
Author: rongarret <ron@mickey>
Date:   Wed Feb 3 10:13:38 2010 -0800

   numbers->letters

A       file2
[ron@mickey:~/devel/gittest]$ ls
file2 git/
[ron@mickey:~/devel/gittest]$ cat>file2
6
7
8
9
10
[ron@mickey:~/devel/gittest]$ git mv file2 file3
[ron@mickey:~/devel/gittest]$ git commit -m 'letters->numbers'
[master ae3f6d4] letters->numbers
 1 files changed, 0 insertions(+), 0 deletions(-)
 rename file2 => file3 (100%)
[ron@mickey:~/devel/gittest]$ git log --name-status -M --follow file3
commit ae3f6d440483fa41cf08819237e87d567ac3a31d
Author: rongarret <ron@mickey>
Date:   Wed Feb 3 10:15:00 2010 -0800

    letters->numbers

R100    file2   file3

commit fe05d1233be1bb11f4ed0e8496e4191795d515a0
Author: rongarret <ron@mickey>
Date:   Wed Feb 3 10:13:38 2010 -0800

   numbers->letters

A       file2
[ron@mickey:~/devel/gittest]$ ls
file3 git/
[ron@mickey:~/devel/gittest]$ mv file3 file4
[ron@mickey:~/devel/gittest]$ git rm file3
rm 'file3'
[ron@mickey:~/devel/gittest]$ git add file4
[ron@mickey:~/devel/gittest]$ git commit -m 'rm/add identical content'
[master a3d7227] rm/add identical content
 2 files changed, 5 insertions(+), 5 deletions(-)
 delete mode 100644 file3
 create mode 100644 file4
[ron@mickey:~/devel/gittest]$ git log --name-status -M --follow file4
commit a3d7227fc2edca75fff8894acd5b077d1788bb36
Author: rongarret <ron@mickey>
Date:   Wed Feb 3 10:17:23 2010 -0800

    rm/add identical content

A       file4
[ron@mickey:~/devel/gittest]$

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2010-02-04  0:48 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-03 18:25 git-mv redux: there must be something else going on Ron Garret
2010-02-03 18:48 ` Avery Pennarun
2010-02-03 19:23   ` Ron Garret
2010-02-03 19:47     ` Avery Pennarun
2010-02-03 20:30       ` Ron Garret
2010-02-03 19:53     ` Nicolas Pitre
2010-02-03 20:27       ` Ron Garret
2010-02-03 20:31         ` Ron Garret
2010-02-03 20:40         ` Avery Pennarun
2010-02-03 22:33           ` Ron Garret
2010-02-03 23:18             ` Avery Pennarun
2010-02-03 23:55               ` Jay Soffian
2010-02-04  0:10                 ` Ron Garret
2010-02-04  0:10               ` Ron Garret
2010-02-04  0:48             ` Junio C Hamano
2010-02-03 20:44         ` Nicolas Pitre
2010-02-03 20:12   ` Pete Harlan
2010-02-03 20:34     ` Ron Garret
2010-02-03 21:12       ` [PATCH] Documentation: clarify git-mv behaviour wrt dirty files Thomas Rast
2010-02-03 21:56         ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).