How do I stop git enumerating my working directory

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

How do I stop git enumerating my working directory

From: Paul Gardiner <hidden>
Date: 2016-06-15 22:44:52

Hi,

I'm a recent convert to git. I've been swapping over my projects
from cvs to git. The latest candidate for conversion is the
config files for my Linux server. I've been using cvs to record
all the config changes, and - mostly-automatically - to setup
new servers. Git will do a far better job, I think, but
I think I'm going to run into a problem: the root directory
of the server will be the working directory. Only relatively
few files will be under version control. How do I stop git
enumerating the whole drive whenever I do things like git-diff?

I don't think I can make .gitignore files do the job, because
it seems that you can set up to ignore a whole directory,
and then partially countermand that by placing a .gitignore
file (containing ! commands) inside the directory. That
makes me think that ignoring doesn't prevent the
enumeration.

Any help most appreciated. I really want to use git for
this.

Cheers,
	Paul.

Re: How do I stop git enumerating my working directory

From: Brian Gernhardt <hidden>
Date: 2016-06-15 22:44:52

On Jul 1, 2008, at 11:57 AM, Paul Gardiner wrote:
I don't think I can make .gitignore files do the job, because
it seems that you can set up to ignore a whole directory,
and then partially countermand that by placing a .gitignore
file (containing ! commands) inside the directory. That
makes me think that ignoring doesn't prevent the
enumeration.
That's where you're wrong.  You can't get git to pay attention to  
anything inside an ignored directory using the .gitignore files.  Once  
you ignore a directory, git stops looking at it completely.  You can  
force git to look at a file inside an ignored directory by adding it  
directly, though.  Git will pay attention to files you add for  
changes, but won't pay any attention to other files around it.

See the log below for what I mean:

$ mkdir temp
$ cd temp
$ git init
Initialized empty Git repository in /Users/brian/dev/temp/.git/
$ cat > .gitignore
ignoredir/
$ mkdir ignoredir
$ touch A
$ touch ignoredir/B
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       A
nothing added to commit but untracked files present (use "git add" to  
track)
$ cat > ignoredir/.gitignore
!B
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       A
nothing added to commit but untracked files present (use "git add" to  
track)
$ git add ignoredir/B
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file: ignoredir/B
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       A
$ git commit -m "A"
Created initial commit 36ade7a: A
  0 files changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 ignoredir/B
$ echo new > ignoredir/B
$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#       modified:   ignoredir/B
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       A
no changes added to commit (use "git add" and/or "git commit -a")
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help