summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2005-05-04Git-prune-script loses blobs referenced from an uncommitted cache.Libravatar Junio C Hamano2-5/+60
(updated from the version posted to GIT mailing list). When a new blob is registered with update-cache, and before the cache is written as a tree and committed, git-fsck-cache will find the blob unreachable. This patch adds a new flag, "--cache" to git-fsck-cache, with which it keeps such blobs from considered "unreachable". The git-prune-script is updated to use this new flag. At the same time it adds .git/refs/*/* to the set of default locations to look for heads, which should be consistent with expectations from Cogito users. Without this fix, "diff-cache -p --cached" after git-prune-script has pruned the blob object will fail mysteriously and git-write-tree would also fail. Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-05-04Short-cut error return path in git-local-pull.Libravatar Junio C Hamano1-9/+16
When git-local-pull with -l option gets ENOENT attempting to create a hard link, there is no point falling back to other copy methods. With this patch, git-local-pull detects such a case and gives up copying the file early. Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-05-04Make git-*-pull say who wants them for missing objects.Libravatar Junio C Hamano1-7/+30
This patch updates pull.c, the engine that decides which objects are needed, given a commit to traverse from, to report which commit was calling for the object that cannot be retrieved from the remote side. This complements git-fsck-cache in that it checks the consistency of the remote repository for reachability. Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-05-03sha1_file: make the new sha1 object writing be coda-friendly.Libravatar Linus Torvalds1-1/+14
Coda doesn't like cross-directory hardlinks. So try to fall back on a plain rename instead.
2005-05-03Improve sha1 object file writing.Libravatar Linus Torvalds2-96/+39
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.
2005-05-03fsck-cache: fix SIGSEGV on bad tag objectLibravatar Linus Torvalds1-5/+8
fsck_tag() failes to notice that the parsing of the tag may have failed in the parse_object() call on the object that it is tagging. Noticed by Junio. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-03Automatic merge of /home/torvalds/junkio/.git/Libravatar Linus Torvalds7-90/+114
2005-05-02fsck-cache: report broken links correctlyLibravatar Linus Torvalds1-1/+1
We reported the type of te missing object incorrectly: we reported it as the type of the referrer object, not the object that was referred to.
2005-05-02Make fsck-cache do better tree checking.Libravatar Linus Torvalds3-7/+57
We check the ordering of the entries, and we verify that none of the entries has a slash in it (this allows us to remove the hacky "has_full_path" member from the tree structure, since we now just test it by walking the tree entries instead).
2005-05-02[PATCH] Fix warning in convert-cacheLibravatar tony.luck@intel.com1-1/+1
gcc 3.4.3 kicks out this warning: convert-cache.c: In function `write_subdirectory': convert-cache.c:102: warning: field precision is not type int (arg 4) Signed-off-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-02fsck-cache: sort entries by inode numberLibravatar Linus Torvalds1-16/+73
This improves the cold-cache behaviour on most filesystems, since it makes the fsck access patterns more regular on the disk, rather than seeking back and forth. Note the "most". Not all filesystems have any relationship between inode number and location on disk.
2005-05-01Update git-merge-one-file-script.Libravatar Junio C Hamano1-38/+26
With this change, git-merge-one-file-script ceases to smudge files in the work tree when recording the trivial merge results (conflicting auto-merge failure case does not touch the work tree file as before). Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-05-01Implement git-update-cache --force-remove <path>Libravatar Junio C Hamano1-0/+9
This new flag tells git-update-cache to remove the named path even when the work tree still happens to have the file. It is used to update git-merge-one-file-script not to smudge the work tree. Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-05-01Add git-write-blob.Libravatar Junio C Hamano5-52/+79
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>
2005-05-01Make git-apply-patch-script executable.Libravatar Junio C Hamano1-0/+0
2005-05-01Change the prefix for builtin diff generation.Libravatar Linus Torvalds1-1/+1
It's silly, and it shouldn't matter, but every time I look at the diffs, I ended up just worrying why "l/" and "k/" as the prefixes. Junio says it's a tribute to linux-kernel, but graciously also said I can change it to something else. So make it "a/" and "b/" until somebody else complains ;)
2005-05-01[PATCH] git-export complains about mising cat-fileLibravatar Alexey Nezhdanov2-5/+5
Fixes bits leaved during name change. Signed-off-by: Alexey Nezhdanov <snake@penza-gsm.ru> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01[PATCH] git-local-pull updatesLibravatar Junio C Hamano1-24/+41
This is to be applied on top of the previous patch to add git-local-pull command. In addition to the '-l' (attempt hardlink before anything else) and the '-s' (then attempt symlink) flags, it adds '-n' (do not fall back to file copy) flag. Also it updates the comments. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01[PATCH] typo fixes to git-apply-patch-scriptLibravatar Junio C Hamano1-4/+2
When git-apply-patch-script creates a new file without executable mode set, a typo caused it not to report that activity to the user. Also it was mistakenly running git-update-cache twice for newly created or deleted paths. This patch fixes these problems. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01[PATCH] Add git-local-pull.Libravatar Junio C Hamano2-1/+112
This adds the git-local-pull command as a smaller brother of http-pull and rpull. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01[PATCH] Do not call fetch() when we have it.Libravatar Junio C Hamano3-11/+12
Currently pull() calls fetch() without checking whether we have the wanted object but all of the existing fetch() implementations perform this check and return success themselves. This patch moves the check to the caller. I will be sending a trivial git-local-pull which depends on this in the next message. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01[PATCH] Make git-update-cache --refresh fail if update/merge needed.Libravatar Junio C Hamano1-5/+10
Scripts may find it useful if they do not have to parse the output from the command but just can rely on its exit status. Earlier both Linus and myself thought this would be necessary to make git-prune-script safer but it turns out that the issue was somewhere else and not related to what this patch addresses. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01Fix missing '\n' at end of git-cat-file -t output.Libravatar Linus Torvalds1-0/+1
2005-05-01Make "cat-file" use "read_object_with_reference()"Libravatar Linus Torvalds1-9/+12
This means that you can take a tag object, and do git-cat-file commit tagname and it will cat the commit that the tag points to. Or you can cat the tree that a commit (or tag) points to. It still gives the old behaviour if you just give it the original type, ie if you want to see the tag object itself, you'd do git-cat-file -t tagname and you'd get the expected tag output.
2005-05-01Remove the ugly jit-style parent syntax.Libravatar Linus Torvalds1-44/+0
If somebody wants it later, we can re-do it, but for now we consider it an experiment that wasn't worth it. Git will still honor symbolic names, it just won't look up parents for you. Of course, you can always do it by hand if you want to.
2005-05-01Add "look up parent" logic for the simple names.Libravatar Linus Torvalds1-5/+62
It uses the jit syntax, at least for now. 0-xxxx is the first parent of xxxx, while 1-xxxx is the second, and so on. You can use just "-xxxx" for the first parent, but a lot of commands will think that the initial '-' implies a command line flag.
2005-05-01Add "get_sha1()" helper function.Libravatar Linus Torvalds16-16/+46
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.
2005-05-01date handling: handle "AM"/"PM" on timeLibravatar Linus Torvalds2-9/+23
And be a bitmore careful about matching: if we don't recognize a word or a number, we skip the whole thing, rather than trying the next character in that word/number. Finally: since ctime() adds the final '\n', don't add another one in test-date.
2005-05-01date.c: allow even more varied time formatsLibravatar Linus Torvalds1-54/+152
(and some added checks for truly non-sensical stuff)
2005-05-01[PATCH] Allow removing files in a subdirectory.Libravatar Junio C Hamano1-1/+1
I found this during a conflict merge testing. The original did not have either DF (a file) or DF/DF (a file DF/DF under a directory DF). One side created DF, the other created DF/DF. I first resolved DF as a new file by taking what the first side did. After that, the entry DF/DF cannot be resolved by running git-update-cache --remove although it does not exist on the filesystem. $ /bin/ls -F AN DF MN NM NN SS Z/ $ git-ls-files --stage | grep DF 100644 71420ab81e254145d26d6fc0cddee64c1acd4787 0 DF 100644 68a6d8b91da11045cf4aa3a5ab9f2a781c701249 2 DF/DF $ git-update-cache --remove DF/DF fatal: Unable to add DF/DF to database It turns out that the errno from open() in this case was not ENOENT but ENOTDIR, which the code did not check. Here is a fix. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01[PATCH] Really fix git-merge-one-file-script this time.Libravatar Junio C Hamano1-23/+18
The merge-cache program was updated to pass executable bits when calling git-merge-one-file-script, but the called script supplied as an example were not using them carefully. This patch fixes the following problems in the script: * When a new file is created in a directory, which is a file in the work tree, it tried to create leading directory but did not check for failure from the "mkdir -p" command. * The script did not check the exit status from the git-update-cache command at all. * The parameter "$4" to the script is a file name that can contain almost any characters, so it must be quoted with double quotes and also needs to be preceded with -- to mark it as a non-option when passed to certain commands. * The chmod command was used with parameter "$6" or "$7" to set the mode bits. This contradicts with the strategy taken by checkout-cache, where we honor user's umask and force only the executable bits. With this patch, it creates a new file by redirecting into it (thus honoring user's default umask), and then uses "chmod +x" if we want the resulting file executable. Without this fix, the merge result becomes 0644 or 0755 for users whose umask is 002 for whom it should become 0664 or 0775. * When "$1 -> $2 -> $3" case was not handled, the script did not say which path it was working on, which was not so useful when used with the -a option of git-merge-cache. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01[PATCH] Add git-apply-patch-script.Libravatar Junio C Hamano2-2/+62
I said: - Stop attempting to be compatible with cg-patch, and drop (mode:XXXXXX) bits from the diff. - Do keep the /dev/null change for created and deleted case. - No "Index:" line, no "Mode change:" line, anywhere in the output. Anything that wants the mode bits and sha1 hash can do things from GIT_EXTERNAL_DIFF mechanism. Maybe document suggested usage better. This adds an example script git-apply-patch-script, that can be used as the GIT_EXTERNAL_DIFF to apply changes between two trees directly on the current work tree, like this: GIT_EXTERNAL_DIFF=git-apply-patch-script git-diff-tree -p <tree> <tree> Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01[PATCH] Rework built-in diff to make its output more dense.Libravatar Junio C Hamano1-11/+15
Linus says, The fewer lines there are that don't usually tell a human anything, the better. Dense is good. This patch makes the default diff output more dense. This removes the previous misguided attempt to be cg-patch compatible. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-30[PATCH] Resurrect diff-tree-helper -RLibravatar Junio C Hamano1-6/+11
Diff-tree-helper take two patch inadvertently dropped the support of -R option, which is necessary to produce reverse diff based on diff-cache and diff-files output (diff-tree does not matter since you can feed two trees in reverse order). This patch restores it. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-30[PATCH] Split out "pull" from particular methodsLibravatar Daniel Barkalow5-154/+114
The method for deciding what to pull is useful separately from any of the ways of actually fetching the objects. So split out "pull" functionality from http-pull and rpull Signed-off-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-30rev-tree.c: don't include unnecessary header filesLibravatar Linus Torvalds1-5/+0
We used to have all these time-related issues, long gone now.
2005-04-30date.c: fix printout of timezone offsets that aren't exact hoursLibravatar Linus Torvalds1-2/+8
We'd get the sign wrong for the minutes part of a negative offset.
2005-04-30date.c: only use the TZ names if we don't have anything better.Libravatar Linus Torvalds1-1/+5
Also, add EEST (hey, it's Finland).
2005-04-30date.c: split up dst information in the timezone tableLibravatar Linus Torvalds1-45/+51
This still doesn't actually really _use_ it properly, nor make any distinction between different DST rules, but at least we could (if we wanted to) fake it a bit better. Right now the code actually still says "it's always summer". I'm from Finland, I don't like winter.
2005-04-30date.c: fix parsing of dates in mm/dd/yy formatLibravatar Linus Torvalds1-1/+3
We looked at the year one character too early, and we didn't accept a two-character year date after 2000.
2005-04-30date.c: use the local timezone if none specifiedLibravatar Linus Torvalds1-2/+7
2005-04-30[PATCH] fix usage string for renamed git commandsLibravatar Nicolas Pitre2-6/+6
Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-30Make the date parsing accept pretty much any random crap.Libravatar Linus Torvalds3-106/+238
This date parser turns line-noise into a date. Cool.
2005-04-30Make git-fsck-cache error printouts a bit more informative.Libravatar Linus Torvalds1-12/+18
Show the types of objects involved in broken links, and don't bother warning about unreachable tag files (if somebody cares about tags, they'll use the --tags flag to see them).
2005-04-30Rename "show-files" to "ls-files"Libravatar Linus Torvalds2-2/+2
As suggested by Nicolas Pitre
2005-04-30Fix up d_type handling - we need to include <dirent.h> beforeLibravatar Linus Torvalds1-2/+1
we play with the d_type compatibility macros.
2005-04-30[PATCH] compat: replace AF_LOCAL with AF_UNIXLibravatar Edgar Toernig2-5/+5
There's no AF_LOCAL in POSIX
2005-04-30[PATCH] compat: missing dirent.d_type fieldLibravatar Edgar Toernig2-1/+10
Not everybody has "d_type".
2005-04-30[PATCH] compat: support pre-1.2 zlibLibravatar Edgar Toernig1-0/+4
Older zlib's don't have deflateBound()
2005-04-30[PATCH] Do date parsing by hand...Libravatar Edgar Toernig4-27/+191
...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.