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 > 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 > 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. > 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. - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Fri Oct 21 20:53:43 2005
This archive was generated by hypermail 2.1.8 : 2005-10-21 20:53:48 EST