Hi Junio,
* Junio C Hamano [30 I 2008 21:39]:
When you say "foo", you mean "I want either 'foo' that is a
non-directory, or everything under 'foo' if that is a
directory". When you say "foo/", you are saying "I do not want
'foo' if it is a non-directory. I want everything under 'foo'
if and only if that is a directory". Compare:
git ls-files -s Makefile/
git ls-files -s Makefile
The first one is silent, and the latter answers. On the other
hand, for a directory, both of these give you the same:
git ls-files Documentation/
git ls-files Documentation
As you said above both "Documentation/" and "Documentation" match the
existing tracked directory named "Documentation". That is how ls-files
works and it is the only sane way. The problem is that I expect that
directory entries ending with "/" in .gitignore and .git/info/exclude
files are treated in a similar way, i.e. they are being _ignored_ with
all the stuff in them, in the same way as directory entries without the
ending slash. Unfortunately this is not the case. See this example:
ediap@lespaul ~/tmp $ mkdir repo && cd repo
ediap@lespaul ~/tmp/repo $ git init
Initialized empty Git repository in .git/
ediap@lespaul ~/tmp/repo $ touch a.txt
ediap@lespaul ~/tmp/repo $ git add a.txt
ediap@lespaul ~/tmp/repo $ git commit -m "a file"
Created initial commit 1712595: a file
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a.txt
ediap@lespaul ~/tmp/repo $ mkdir d
ediap@lespaul ~/tmp/repo $ touch d/b.txt
ediap@lespaul ~/tmp/repo $ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# d/
nothing added to commit but untracked files present (use "git add" to track)
ediap@lespaul ~/tmp/repo $ echo "d/" > .gitignore
ediap@lespaul ~/tmp/repo $ git add .gitignore
ediap@lespaul ~/tmp/repo $ git commit -m "ignore"
Created commit 29ebf4d: ignore
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 .gitignore
ediap@lespaul ~/tmp/repo $ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# d/
nothing added to commit but untracked files present (use "git add" to track)
But:
ediap@lespaul ~/tmp/repo $ echo "d" > .gitignore
ediap@lespaul ~/tmp/repo $ git add .gitignore
ediap@lespaul ~/tmp/repo $ git commit --amend -m "ignore"
Created commit 43198d4: ignore
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 .gitignore
ediap@lespaul ~/tmp/repo $ git status
# On branch master
nothing to commit (working directory clean)
I hope you now understand what I was trying to express in my previous
email. :-)
BR,
/Adam
--
.:. Adam Piatyszek (ediap) .:.....................................:.
.:. ediap@xxxxxxxxxxxxxxxxxxxxx .:................................:.
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html