summaryrefslogtreecommitdiff
path: root/cache.h
Commit message (Collapse)AuthorAgeFilesLines
* Fix symlink handlingLinus Torvalds2005-05-051-3/+1
| | | | | We really always want to have S_IFREG there for non-symlinks, otherwise we create corrupt index files.
* [PATCH] git and symlinks as tracked contentKay Sievers2005-05-051-1/+9
| | | | | | | | | | 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>
* Improve sha1 object file writing.Linus Torvalds2005-05-031-3/+0
| | | | | | | | | | | Make it much safer: we write to a temporary file, and then link that temporary file to the final destination. This avoids all the nasty races if several people write the same object at the same time. It should also result in nicer on-disk layout, since it means that objects all get created in the same subdirectory. That makes a lot of block allocation algorithms happier, since the objects will now be allocated from the same zone.
* Add git-write-blob.Junio C Hamano2005-05-011-0/+1
| | | | | | | | | | | | | | A new command, git-write-blob, is introduced. This registers the contents of any file on the filesystem as a blob in the object database and reports its SHA1 to the standard output. To implement it, the patch promotes index_fd() from a static function in update-cache.c to extern and moves it to a library source, sha1_file.c. This command is used to update git-merge-one-file-script so that it does not smudge the work tree. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Add "get_sha1()" helper function.Linus Torvalds2005-05-011-0/+1
| | | | | | | | | | | | This allows the programs to use various simplified versions of the SHA1 names, eg just say "HEAD" for the SHA1 pointed to by the .git/HEAD file etc. For example, this commit has been done with git-commit-tree $(git-write-tree) -p HEAD instead of the traditional "$(cat .git/HEAD)" syntax.
* [PATCH] compat: missing dirent.d_type fieldEdgar Toernig2005-04-301-0/+9
| | | | | Not everybody has "d_type".
* [PATCH] compat: support pre-1.2 zlibEdgar Toernig2005-04-301-0/+4
| | | | | Older zlib's don't have deflateBound()
* [PATCH] Do date parsing by hand...Edgar Toernig2005-04-301-0/+3
| | | | | | | | | | | | | | ...since everything out there is either strange (libc mktime has issues with timezones) or introduces unnecessary dependencies for people (libcurl). This goes back to the old date parsing, but moves it out into a file of its own, and does the "struct tm" to "seconds since epoch" handling by hand. I grepped through the tz-database and it seems there's one "country" left that has non-60-minute DST: Lord Howe Island. All others dropped that before 1970.
* [PATCH] Rename and extend read_tree_with_tree_or_commit_sha1Junio C Hamano2005-04-281-3/+4
| | | | | | | | | | | | | | | This patch renames read_tree_with_tree_or_commit_sha1() to read_object_with_reference() and extends it to automatically dereference not just "commit" objects but "tag" objects. With this patch, you can say e.g.: ls-tree $tag read-tree -m $(merge-base $tag $HEAD) $tag $HEAD diff-cache $tag diff-tree $tag $HEAD Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] introduce xmalloc and xreallocChristopher Li2005-04-261-0/+16
| | | | | | | | 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>
* Fix up the types in write_sha1_fileLinus Torvalds2005-04-251-1/+1
| | | | Use "unsigned long" for the size, like we do everywhere else.
* Simplify "write_sha1_file()" interfacesLinus Torvalds2005-04-251-1/+1
| | | | | The write function now adds the header to the file by itself, so there is no reason to duplicate it among all the users any more.
* [PATCH] Additional functions for the objects databaseDaniel Barkalow2005-04-231-0/+5
| | | | | | | | | This adds two functions: one to check if an object is present in the local database, and one to add an object to the local database by reading it from a file descriptor and checking its hash. Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* New "diff-cache" implementation.Linus Torvalds2005-04-221-0/+2
| | | | | | | | | | 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.
* Move "read_tree()" to "tree.c" to be used as a generic helper function.Linus Torvalds2005-04-221-0/+3
| | | | Next step: make "diff-cache" use it.
* Add support for alternate SHA1 library implementations.Linus Torvalds2005-04-211-1/+1
| | | | | | | | | | This one includes the Mozilla SHA1 implementation sent in by Edgar Toernig. It's dual-licenced under MPL-1.1 or GPL, so in the context of git, we obviously use the GPL version. Side note: the Mozilla SHA1 implementation is about twice as fast as the default openssl one on my G5, but the default openssl one has optimized x86 assembly language on x86. So choose wisely.
* Add support for a "GIT_INDEX_FILE" environment variable.Linus Torvalds2005-04-211-0/+8
| | | | | | | | | 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.
* [PATCH] Accept commit in some places when tree is needed.Junio C Hamano2005-04-201-0/+4
| | | | | | | | | | | | | | | This patch implements read_tree_with_tree_or_commit_sha1(), which can be used when you are interested in reading an unpacked raw tree data but you do not know nor care if the SHA1 you obtained your user is a tree ID or a commit ID. Before this function's introduction, you would have called read_sha1_file(), examined its type, parsed it to call read_sha1_file() again if it is a commit, and verified that the resulting object is a tree. Instead, this function does that for you. It returns NULL if the given SHA1 is not either a tree or a commit. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Improve build: add <unistd.h> and use -O2 instead of -O3Linus Torvalds2005-04-201-0/+1
| | | | (Nobody should use -O3. It just makes bad inlining decisions).
* Make the sha1 of the index file go at the very end of the file.Linus Torvalds2005-04-201-1/+0
| | | | This allows us to both calculate it and verify it faster.
* Do SHA1 hash _before_ compression.conversionLinus Torvalds2005-04-201-1/+1
| | | | | And add a "convert-cache" program to convert from old-style to new-style.
* Be much more liberal about the file mode bits.Linus Torvalds2005-04-161-0/+3
| | | | | | 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.
* [PATCH] Add --stage to show-files for new stage dircache.Junio C Hamano2005-04-161-5/+7
| | | | | | | | | This adds --stage option to show-files command. It shows file-mode, SHA1, stage and pathname. Record separator follows the usual convention of -z option as before. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] Byteorder fix for read-tree, new -m semantics version.Junio C Hamano2005-04-161-1/+1
| | | | | | | | | | | | The ce_namelen field has been renamed to ce_flags and split into the top 2-bit unused, next 2-bit stage number and the lowest 12-bit name-length, stored in the network byte order. A new macro create_ce_flags() is defined to synthesize this value from length and stage, but it forgets to turn the value into the network byte order. Here is a fix. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Make cache entry comparison take the new "state" flag into account.Linus Torvalds2005-04-151-3/+4
| | | | | This is what allows us to have multiple states of the same file in the index, and what makes it always sort correctly.
* Encode a few extra flags per index entry.Linus Torvalds2005-04-151-2/+6
| | | | | | This will allow us to have the same name in different "states" in the index at the same time. Which in turn seems to be a very simple way to merge.
* Convert the index file reading/writing to use network byte order.Linus Torvalds2005-04-151-13/+18
| | | | | | | 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).
* [PATCH] Consolidate the error handlingPetr Baudis2005-04-131-1/+4
| | | | | | | 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>
* Rename ".dircache" directory to ".git"Linus Torvalds2005-04-111-1/+1
| | | | I started out calling the tool "dircache". That's clearly moronic.
* Add "-R" flag to "diff-tree", so that it will recursively traverse a tree of ↵Linus Torvalds2005-04-101-4/+4
| | | | | | | | trees as it diffs them. This makes diff-tree usable again in the new world order.
* Make "update-cache" a bit friendlier to use (and harder to mis-use).Linus Torvalds2005-04-101-2/+2
| | | | | | | 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.
* This implements the new "recursive tree" write-tree.Linus Torvalds2005-04-091-1/+1
| | | | | | 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.
* Export "cache_name_compare()" helper function.Linus Torvalds2005-04-091-0/+1
| | | | The "diff-tree" program needs it.
* Make "write_cache()" and friends available as generic routines.Linus Torvalds2005-04-091-2/+5
| | | | | | 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).
* Make the cache stat information comparator public.Linus Torvalds2005-04-091-1/+9
| | | | | Like the cache filename finder, it's a generically useful function, rather than something specific to the current "show-diff" thing.
* Make "cache_name_pos()" available to others.Linus Torvalds2005-04-091-0/+1
| | | | | | | | 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.
* Fix missing return values and some error tests for empty index filesLinus Torvalds2005-04-091-1/+1
| | | | | | | | | 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.
* Add "check_sha1_signature()" helper functionLinus Torvalds2005-04-081-0/+1
| | | | And fix up header declarations.
* Factor out "read_sha1_file" into mapping/inflating/unmapping.Linus Torvalds2005-04-081-0/+2
| | | | | This allows us to also actually check the sha1 hash using these routines. Needed for the "fsck" thing.
* Make "cat-file" output the file contents to stdout.Linus Torvalds2005-04-081-0/+1
| | | | | New syntax: "cat-file -t <sha1>" shows the tag, while "cat-file <tag> <sha1>" outputs the file contents after checking that the supplied tag matches.
* Initial revision of "git", the information manager from hellinitialLinus Torvalds2005-04-071-0/+93