summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-06-06 22:43:24 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-06-06 22:43:24 (GMT)
commitd44c782bbd6b0e806e056f9e8ff8cd8e426e67a3 (patch)
treeca47f19971689badb2b644d038a72f4b0d9d8f13
parentf07dfbad29d473b35b5fecebf4baf77e32c7f97f (diff)
parente2ac7cb5fbcf1407003aa07cdcd14141527ea2e3 (diff)
downloadgit-d44c782bbd6b0e806e056f9e8ff8cd8e426e67a3.zip
git-d44c782bbd6b0e806e056f9e8ff8cd8e426e67a3.tar.gz
git-d44c782bbd6b0e806e056f9e8ff8cd8e426e67a3.tar.bz2
Merge branch 'sv/objfixes'
* sv/objfixes: Don't assume tree entries that are not dirs are blobs git-cvsimport: Make sure to use $git_dir always instead of .git sometimes fix documentation of unpack-objects -n Accept dates before 2000/01/01 when specified as seconds since the epoch
-rw-r--r--Documentation/git-unpack-objects.txt4
-rw-r--r--date.c6
-rwxr-xr-xgit-cvsimport.perl6
-rw-r--r--object.c3
-rw-r--r--tree.c7
5 files changed, 18 insertions, 8 deletions
diff --git a/Documentation/git-unpack-objects.txt b/Documentation/git-unpack-objects.txt
index ff6184b..b1b3ec9 100644
--- a/Documentation/git-unpack-objects.txt
+++ b/Documentation/git-unpack-objects.txt
@@ -27,8 +27,8 @@ new packs and replace existing ones.
OPTIONS
-------
-n::
- Only list the objects that would be unpacked, don't actually unpack
- them.
+ Dry run. Check the pack file without actually unpacking
+ the objects.
-q::
The command usually shows percentage progress. This
diff --git a/date.c b/date.c
index a9b59a2..4690371 100644
--- a/date.c
+++ b/date.c
@@ -414,9 +414,11 @@ static int match_digit(const char *date, struct tm *tm, int *offset, int *tm_gmt
num = strtoul(date, &end, 10);
/*
- * Seconds since 1970? We trigger on that for anything after Jan 1, 2000
+ * Seconds since 1970? We trigger on that for any numbers with
+ * more than 8 digits. This is because we don't want to rule out
+ * numbers like 20070606 as a YYYYMMDD date.
*/
- if (num > 946684800) {
+ if (num >= 100000000) {
time_t time = num;
if (gmtime_r(&time, tm)) {
*tm_gmt = 1;
diff --git a/git-cvsimport.perl b/git-cvsimport.perl
index f68afe7..4e6c9c6 100755
--- a/git-cvsimport.perl
+++ b/git-cvsimport.perl
@@ -692,8 +692,8 @@ sub commit {
if ($branch eq $opt_o && !$index{branch} && !get_headref($branch, $git_dir)) {
# looks like an initial commit
# use the index primed by git-init
- $ENV{GIT_INDEX_FILE} = '.git/index';
- $index{$branch} = '.git/index';
+ $ENV{GIT_INDEX_FILE} = "$git_dir/index";
+ $index{$branch} = "$git_dir/index";
} else {
# use an index per branch to speed up
# imports of projects with many branches
@@ -984,7 +984,7 @@ if ($line =~ /^(\d+) objects, (\d+) kilobytes$/) {
}
foreach my $git_index (values %index) {
- if ($git_index ne '.git/index') {
+ if ($git_index ne "$git_dir/index") {
unlink($git_index);
}
}
diff --git a/object.c b/object.c
index cfc4969..16793d9 100644
--- a/object.c
+++ b/object.c
@@ -160,8 +160,11 @@ struct object *parse_object_buffer(const unsigned char *sha1, enum object_type t
parse_tag_buffer(tag, buffer, size);
obj = &tag->object;
} else {
+ warning("object %s has unknown type id %d\n", sha1_to_hex(sha1), type);
obj = NULL;
}
+ if (obj && obj->type == OBJ_NONE)
+ obj->type = type;
*eaten_p = eaten;
return obj;
}
diff --git a/tree.c b/tree.c
index a372827..04fe653 100644
--- a/tree.c
+++ b/tree.c
@@ -173,8 +173,13 @@ static void track_tree_refs(struct tree *item)
continue;
if (S_ISDIR(entry.mode))
obj = &lookup_tree(entry.sha1)->object;
- else
+ else if (S_ISREG(entry.mode) || S_ISLNK(entry.mode))
obj = &lookup_blob(entry.sha1)->object;
+ else {
+ warning("in tree %s: entry %s has bad mode %.6o\n",
+ sha1_to_hex(item->object.sha1), entry.path, entry.mode);
+ obj = lookup_unknown_object(entry.sha1);
+ }
refs->ref[i++] = obj;
}
set_object_refs(&item->object, refs);