git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: How do I clear the directory cache

From
Petr Baudis <pasky@suse.cz>
Date
Oct 21, 2005, 10:52 UTC
Message-ID
<20051021105235.GF30889@pasky.or.cz>
In-Reply-To
<2b05065b0510202023i62ab7c03uea1381d76535dcc7@mail.gmail.com>

Dear diary, on Fri, Oct 21, 2005 at 05:23:28AM CEST, I got a letter where eschvoca <eschvoca@gmail.com> told me that...

> Yes, "cg-reset --adds-removals" is what I want (how do I do this with
> pure git?).
	git-read-tree HEAD
	git-update-cache --refresh
Show 10 quoted lines
> I would like to clear/reset the index because I've screwed it all up. 
> I don't think I can do as you suggested because of the way I got into
> this mess.
> 
> I'm using git/cogito to version control my hard drive and I've been
> gradually adding more entries into the .gitignore file because some
> files change too frequently or I don't want them backed up.  The OS
> modified a bunch of files, I cg-rm'd 1/4 of them, then I changed my
> mind and added them back, also did some genuine cg-adds, etc. and now
> I'm all confused (it's a whole hard drive).

Well, cg-status should show you what you effectively did, and then you could just do something like:

	cg-status -w | grep ^D | tr '\n' '\0' | xargs -0 cg-add
	cg-status -w | grep ^A | tr '\n' '\0' | xargs -0 cg-rm
Show 12 quoted lines
> If other people are interested in doing this I can pass on the lessons
> I learned.
> 
> What I found it git is amazingly fast!  cg-status only takes a few
> seconds.  I think there are some problems if you try to do:
> 
> cd /
> cg-add -r usr
> cg-commit -m "take a long break"
> 
> It seems that cg-add-ing and cg-commit-ing smaller chunks is faster
> than one big chunk.

Interesting. I cannot spot anything which would bog it down in Cogito. Is both cg-add and cg-commit significantly slower? (That is, if it takes longer than sum of the smaller chunks.) Perhaps it's a cache issue, not everything from the chunk fits into your cache during cg-add, so cg-commit has to reread it from the disk.

> I think commands for the following should be added to cogito:
I'd prefer:
> cg-status -<status_flag>  # list files with given status flag (without
> status flag in column 1)
>   git-ls-files [--others|--deleted|etc] --exclude-per-directory=/.gitignore

All right, this might be useful. Implemented as cg-status -s '?' and such, thanks for the idea.

Show 8 quoted lines
> cg-add [-r] -<status_flag> # add files with a given status flag
>   git-ls-files [--others|--deleted|etc]
> --exclude-per-directory=/.gitignore | while read i; do cg-add "$i;
> done
> 
> cg-rm [-r] -<status_flag> # you get the idea.
> 
> cg-addremove  # recursively add new files, remove deleted files

I implemented the cg-reset --adds-removes option, but I don't feel comfortable with the cg-add change - just -r would be enough to add new files, and if you are in mess big enough, you can just cg-reset. It would be useful to make cg-rm symmetric to cg-add, though. Then you could do just

	cg-add -r . && cg-rm -r .
and it would be equivalent to cg-addremove.
> I use "while read i" so it will work with spaces in filenames.

And break with leading spaces unless you modified $IFS properly. Note that those people having filenames starting by spaces are either seriously sick or script kiddies who just rooted you (or warez kiddies on your FTP server with anonymously-writable incoming).

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
VI has two modes: the one in which it beeps and the one in which
it doesn't.
Previous: Linus TorvaldsNext: eschvoca
Message 7 of 11 in “How do I clear the directory cache”
  1. eschvocaOct 17, 2005
  2. Petr BaudisOct 20, 2005
  3. eschvocaOct 21, 2005
  4. Junio C HamanoOct 21, 2005
  5. eschvocaOct 21, 2005
  6. Linus TorvaldsOct 21, 2005
  7. Petr BaudisOct 21, 2005
  8. eschvocaOct 21, 2005
  9. Petr BaudisOct 21, 2005
  10. eschvocaOct 22, 2005
  11. Petr BaudisOct 22, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.