summaryrefslogtreecommitdiff
path: root/read-cache.c
AgeCommit message (Collapse)Author
2005-05-27[PATCH] check_file_directory_conflict path fixDavid Meybohm
check_file_directory_conflict can give the wrong answers. This is because the wrong length is passed to cache_name_pos. The length passed should be the length of the whole path from the root, not the length of each path subcomponent. $ git-init-db defaulting to local storage area $ mkdir path && touch path/file $ git-update-cache --add path/file $ rm path/file $ mkdir path/file && touch path/file/f $ git-update-cache --add path/file/f <-- Conflict ignored $ Signed-off-by: David Meybohm <dmeybohmlkml@bellsouth.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-22Don't care about st_dev in the index fileLinus Torvalds
Thomas Glanzmann points out that it doesn't work well with different clients accessing the repository over NFS - they have different views on what the "device" for the filesystem is. Of course, other filesystems may not even have stable inode numbers. But we don't care. At least for now.
2005-05-22Include file cleanups..Linus Torvalds
Add <limits.h> to the include files handled by "cache.h", and remove extraneous #include directives from various .c files. The rule is that "cache.h" gets all the basic stuff, so that we'll have as few system dependencies as possible.
2005-05-20Introduce "base_name_compare()" helper functionLinus Torvalds
This one compares two pathnames that may be partial basenames, not full paths. We need to get the path sorting right, since a directory name will sort as if it had the final '/' at the end.
2005-05-19[PATCH] Implement git-checkout-cache -u to update stat information in the cache.Junio C Hamano
With -u flag, git-checkout-cache picks up the stat information from newly created file and updates the cache. This removes the need to run git-update-cache --refresh immediately after running git-checkout-cache. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-18[PATCH] Kill a bunch of pointer sign warnings for gcc4Brian Gerst
- Raw hashes should be unsigned char. - String functions want signed char. - Hash and compress functions want unsigned char. Signed-off By: Brian Gerst <bgerst@didntduck.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-15Rename some more cache-related functionsBrad Roberts
same_name -> ce_same_name() remove_entry_at() -> remove_cache_entry_at() Signed-off-by: Brad Roberts <braddr@puremagic.com> Signed-off-by: Petr Baudis <pasky@ucw.cz>
2005-05-15Rename cache_match_stat() to ce_match_stat()Brad Roberts
Signed-off-by: Brad Roberts <braddr@puremagic.com> Signed-off-by: Petr Baudis <pasky@ucw.cz>
2005-05-08A stylistic fix to read-cache.cJunio C Hamano
Changes "if (pointer == 0)" to "if (!pointer)" to match the rest of the code, noticed by Petr Baudis. Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-05-08Add git-update-cache --replace option.Junio C Hamano
When "path" exists as a file or a symlink in the index, an attempt to add "path/file" is refused because it results in file vs directory conflict. Similarly when "path/file1", "path/file2", etc. exist, an attempt to add "path" as a file or a symlink is refused. With git-update-cache --replace, these existing entries that conflict with the entry being added are automatically removed from the cache, with warning messages. Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-05-08git-update-cache refuses to add a file where a directory is registed.Junio C Hamano
And vice versa. The next commit will introduce an option --replace to allow replacing existing entries. Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-05-07[PATCH] Do not initialize sha1_file_directory by hand.Junio C Hamano
Some commands initialize sha1_file_directory by hand. There is no need to do so; sha1_file.c knows how to handle it. The next patch will remove the variable altogether. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-06Revert bogus optimization that avoids index file writesLinus Torvalds
It didn't properly mark all cache updates as being dirty, and causes merge errors due to that. In particular, it didn't notice when a file was force-removed. Besides, it was ugly as hell. I've put in place a slightly cleaner version, but I've not enabled the optimization because I don't want to be burned again.
2005-05-06[PATCH] fix compare symlink against readlink not dataKay Sievers
Fix update-cache to compare the blob of a symlink against the link-target and not the file it points to. Also ignore all permissions applied to links. Thanks to Greg for recognizing this while he added our list of symlinks back to the udev repository. Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-05[PATCH] git and symlinks as tracked contentKay Sievers
Allow to store and track symlink in the repository. A symlink is stored the same way as a regular file, only with the appropriate mode bits set. The symlink target is therefore stored in a blob object. This will hopefully make our udev repository fully functional. :) Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-27Allow writing to the private index file mapping.Linus Torvalds
We now modify the in-memory copy of the index file in "diff-cache", so we need to add PROT_WRITE.
2005-04-26[PATCH] introduce xmalloc and xreallocChristopher Li
Introduce xmalloc and xrealloc to die gracefully with a descriptive message when out of memory, rather than taking a SIGSEGV. Signed-off-by: Christopher Li<chrislgit@chrisli.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-23New "diff-cache" implementation.Linus Torvalds
This one is about a million times simpler, and much more likely to be correct too. Instead of trying to match up a tree object against the index, we just read in the tree object side-by-side into the index, and just walk the resulting index file. This was what all the read-tree cleanups were all getting to.
2005-04-21Add support for a "GIT_INDEX_FILE" environment variable.Linus Torvalds
We use that to specify alternative index files, which can be useful if you want to (for example) generate a temporary index file to do some specific operation that you don't want to mess with your main one with. It defaults to the regular ".git/index" if it hasn't been specified.
2005-04-21Fix NSEC compile problem, and properly parse the rev-tree cmd line.Linus Torvalds
The rev-tree thing just happened to work. It shouldn't have.
2005-04-20Make the sha1 of the index file go at the very end of the file.Linus Torvalds
This allows us to both calculate it and verify it faster.
2005-04-20Speed up index file writing by chunking it nicely.Linus Torvalds
No point in making 17,000 small writes when you can make just a couple of hundred nice 8kB writes instead and save a lot of time.
2005-04-18Split up read-cache.c into more logical clumps.Linus Torvalds
Do the usage and error reporting in "usage.c", and the sha1 file accesses in "sha1_file.c". Small, nice, easily separated parts. Good.
2005-04-18[PATCH] fix bug in read-cache.c which loses files when merging a treeJames Bottomley
I noticed this when I tried a non-trivial scsi merge and checked the results against BK. The problem is that remove_entry_at() actually decrements active_nr, so decrementing it in add_cache_entry() before calling remove_entry_at() is a double decrement (hence we lose cache entries at the end).
2005-04-17[PATCH] Fix +x-related show-diff false positivesPetr Baudis
This fixes show-diff listing all +x files as differring. Signed-off-by: Petr Baudis <pasky@ucw.cz> [ That's what I get for working on a G5 - my testing was all big-endian in the first place. -- Linus ] Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-17[PATCH] update-cache --remove marks the path merged.Junio C Hamano
When update-cache --remove is run, resolve unmerged state for the path. This is consistent with the update-cache --add behaviour. Essentially, the user is telling us how he wants to resolve the merge by running update-cache. Signed-off-by: Junio C Hamano <junkio@cox.net> Fixed to do the right thing at the end. Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-17Be much more liberal about the file mode bits.Linus Torvalds
We only really care about the difference between a file being executable or not (by its owner). Everything else we leave for the user umask to decide.
2005-04-16When inserting a index entry of stage 0, remove all old unmerged entries.Linus Torvalds
This allows you to actually tell git that you've resolved a conflict.
2005-04-16Make cache entry comparison take the new "state" flag into account.Linus Torvalds
This is what allows us to have multiple states of the same file in the index, and what makes it always sort correctly.
2005-04-15Convert the index file reading/writing to use network byte order.Linus Torvalds
This allows using a git tree over NFS with different byte order, and makes it possible to just copy a fully populated repository and have the end result immediately usable (needing just a refresh to update the stat information).
2005-04-14Fix read-cache.c collission check logic.Linus Torvalds
Not only did it test the #define the wrong way around, but it also leaked file descriptors and VM space. This should fix it.
2005-04-13[PATCH] Whitespace FixesIngo Molnar
Trivial whitespace fixes. From: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Petr Baudis <pasky@ucw.cz>
2005-04-13[PATCH] Consolidate the error handlingPetr Baudis
Now there is error() for "library" errors and die() for fatal "application" errors. usage() is now used strictly only for usage errors. Signed-off-by: Petr Baudis <pasky@ucw.cz>
2005-04-13[PATCH] Make nsec checking optionalPetr Baudis
The nsec field of ctime/mtime is now checked only with -DNSEC defined during compilation. nsec acts broken since it is stored in the icache but apparently just gets to zero when flushed to filesystem not supporting it (e.g. ext3), creating illusions of false changes. At least that's my impression. Signed-off-by: Petr Baudis <pasky@ucw.cz>
2005-04-13[PATCH] SHA1 naive collision checkingPetr Baudis
When compiled with -DCOLLISION_CHECK, we will check against SHA1 collisions when writing to the object database. From: Christopher Li <chrislgit@chrisli.org> Signed-off-by: Petr Baudis <pasky@ucw.cz>
2005-04-11Rename ".dircache" directory to ".git"Linus Torvalds
I started out calling the tool "dircache". That's clearly moronic.
2005-04-11Fix "usage()" to do the missing line termination.Linus Torvalds
It got broken when I changed it to use stdarg.
2005-04-11Fix off-by-one error in removal of cache entry.Linus Torvalds
Also make the return value of "cache_name_pos()" be sane: positive or zero if we found it (it's the index into the cache array), and "-pos-1" to indicate where it should go if we didn't.
2005-04-10Add "-R" flag to "diff-tree", so that it will recursively traverse a tree of ↵Linus Torvalds
trees as it diffs them. This makes diff-tree usable again in the new world order.
2005-04-10Make "update-cache" a bit friendlier to use (and harder to mis-use).Linus Torvalds
It now requires the "--add" flag before you add any new files, and a "--remove" file if you want to mark files for removal. And giving it the "--refresh" flag makes it just update all the files that it already knows about.
2005-04-10This implements the new "recursive tree" write-tree.Linus Torvalds
It's got some debugging printouts etc still in it, but testing on the kernel seems to show that it does indeed fix the issue with huge tree files for each commit.
2005-04-09Export "cache_name_compare()" helper function.Linus Torvalds
The "diff-tree" program needs it.
2005-04-09Make "write_cache()" and friends available as generic routines.Linus Torvalds
This is needed for the change to make "read-tree" just read into the cache (and then you do a "checkout-cache" to update your current dir contents).
2005-04-09Make the cache stat information comparator public.Linus Torvalds
Like the cache filename finder, it's a generically useful function, rather than something specific to the current "show-diff" thing.
2005-04-09Make "cache_name_pos()" available to others.Linus Torvalds
It finds the cache entry position for a given name, and is generally useful. Sure, everybody can just scan the active cache array, but since it's sorted, you actually want to search it with a binary search, so let's not duplicate that logic all over the place.
2005-04-09Fix missing return values and some error tests for empty index filesLinus Torvalds
Patches from Dave Jones and Ingo Molnar, but since I don't have any infrastructure in place to use the old patch applicator scripts I am trying to build up, I ended up fixing the thing by hand instead. Credit where credit is due, though. Nice to see that people are taking a look at the project even in this early stage.
2005-04-08Add "check_sha1_signature()" helper functionLinus Torvalds
And fix up header declarations.
2005-04-08Factor out "read_sha1_file" into mapping/inflating/unmapping.Linus Torvalds
This allows us to also actually check the sha1 hash using these routines. Needed for the "fsck" thing.
2005-04-08Use "-Wall -O2" for the compiler to get more warnings.Linus Torvalds
And fix up the warnings that it pointed out. Let's keep the tree clean from early on. Not that the code is very beautiful anyway ;)
2005-04-07Add copyright notices.Linus Torvalds
The tool interface sucks (especially "committing" information, which is just me doing everything by hand from the command line), but I think this is in theory actually a viable way of describing the world. So copyright it.