Merge branch 'maint'
* maint: git-fetch: fix status output when not storing tracking ref core-tutorial.txt: Fix showing the current behaviour. git-archive: ignore prefix when checking file attribute Fix documentation syntax of optional arguments in short options.
This commit is contained in:
commit
71349732c5
@ -535,18 +535,18 @@ with the associated patches use the more complex (and much more
|
||||
powerful)
|
||||
|
||||
----------------
|
||||
$ git-whatchanged -p --root
|
||||
$ git-whatchanged -p
|
||||
----------------
|
||||
|
||||
and you will see exactly what has changed in the repository over its
|
||||
short history.
|
||||
|
||||
[NOTE]
|
||||
The `\--root` flag is a flag to `git-diff-tree` to tell it to
|
||||
show the initial aka 'root' commit too. Normally you'd probably not
|
||||
want to see the initial import diff, but since the tutorial project
|
||||
was started from scratch and is so small, we use it to make the result
|
||||
a bit more interesting.
|
||||
When using the above two commands, the initial commit will be shown.
|
||||
If this is a problem because it is huge, you can hide it by setting
|
||||
the log.showroot configuration variable to false. Having this, you
|
||||
can still show it for each command just adding the `\--root` option,
|
||||
which is a flag for `git-diff-tree` accepted by both commands.
|
||||
|
||||
With that, you should now be having some inkling of what git does, and
|
||||
can explore on your own.
|
||||
|
@ -17,6 +17,7 @@ static time_t archive_time;
|
||||
static int tar_umask = 002;
|
||||
static int verbose;
|
||||
static const struct commit *commit;
|
||||
static size_t base_len;
|
||||
|
||||
/* writes out the whole block, but only if it is full */
|
||||
static void write_if_needed(void)
|
||||
@ -251,8 +252,8 @@ static int write_tar_entry(const unsigned char *sha1,
|
||||
buffer = NULL;
|
||||
size = 0;
|
||||
} else {
|
||||
buffer = sha1_file_to_archive(path.buf, sha1, mode, &type,
|
||||
&size, commit);
|
||||
buffer = sha1_file_to_archive(path.buf + base_len, sha1, mode,
|
||||
&type, &size, commit);
|
||||
if (!buffer)
|
||||
die("cannot read %s", sha1_to_hex(sha1));
|
||||
}
|
||||
@ -272,6 +273,7 @@ int write_tar_archive(struct archiver_args *args)
|
||||
archive_time = args->time;
|
||||
verbose = args->verbose;
|
||||
commit = args->commit;
|
||||
base_len = args->base ? strlen(args->base) : 0;
|
||||
|
||||
if (args->commit_sha1)
|
||||
write_global_extended_header(args->commit_sha1);
|
||||
|
@ -13,6 +13,7 @@ static int verbose;
|
||||
static int zip_date;
|
||||
static int zip_time;
|
||||
static const struct commit *commit;
|
||||
static size_t base_len;
|
||||
|
||||
static unsigned char *zip_dir;
|
||||
static unsigned int zip_dir_size;
|
||||
@ -197,8 +198,8 @@ static int write_zip_entry(const unsigned char *sha1,
|
||||
if (S_ISREG(mode) && zlib_compression_level != 0)
|
||||
method = 8;
|
||||
result = 0;
|
||||
buffer = sha1_file_to_archive(path, sha1, mode, &type, &size,
|
||||
commit);
|
||||
buffer = sha1_file_to_archive(path + base_len, sha1, mode,
|
||||
&type, &size, commit);
|
||||
if (!buffer)
|
||||
die("cannot read %s", sha1_to_hex(sha1));
|
||||
crc = crc32(crc, buffer, size);
|
||||
@ -321,6 +322,7 @@ int write_zip_archive(struct archiver_args *args)
|
||||
zip_dir_size = ZIP_DIRECTORY_MIN_SIZE;
|
||||
verbose = args->verbose;
|
||||
commit = args->commit;
|
||||
base_len = args->base ? strlen(args->base) : 0;
|
||||
|
||||
if (args->base && plen > 0 && args->base[plen - 1] == '/') {
|
||||
char *base = xstrdup(args->base);
|
||||
|
@ -215,13 +215,6 @@ static int update_local_ref(struct ref *ref,
|
||||
if (type < 0)
|
||||
die("object %s not found", sha1_to_hex(ref->new_sha1));
|
||||
|
||||
if (!*ref->name) {
|
||||
/* Not storing */
|
||||
if (verbose)
|
||||
sprintf(display, "* branch %s -> FETCH_HEAD", remote);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!hashcmp(ref->old_sha1, ref->new_sha1)) {
|
||||
if (verbose)
|
||||
sprintf(display, "= %-*s %-*s -> %s", SUMMARY_WIDTH,
|
||||
@ -365,8 +358,14 @@ static int store_updated_refs(const char *url, struct ref *ref_map)
|
||||
rm->merge ? "" : "not-for-merge",
|
||||
note);
|
||||
|
||||
if (ref) {
|
||||
if (ref)
|
||||
update_local_ref(ref, what, verbose, note);
|
||||
else if (verbose)
|
||||
sprintf(note, "* %-*s %-*s -> FETCH_HEAD",
|
||||
SUMMARY_WIDTH, *kind ? kind : "branch",
|
||||
REFCOL_WIDTH, *what ? what : "HEAD");
|
||||
else
|
||||
*note = '\0';
|
||||
if (*note) {
|
||||
if (!shown_url) {
|
||||
fprintf(stderr, "From %.*s\n",
|
||||
@ -376,7 +375,6 @@ static int store_updated_refs(const char *url, struct ref *ref_map)
|
||||
fprintf(stderr, " %s\n", note);
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
||||
|
@ -109,9 +109,10 @@ test_expect_success \
|
||||
'diff -r a c/prefix/a'
|
||||
|
||||
test_expect_success \
|
||||
'create an archive with a substfiles' \
|
||||
'create archives with substfiles' \
|
||||
'echo "substfile?" export-subst >a/.gitattributes &&
|
||||
git archive HEAD >f.tar &&
|
||||
git archive --prefix=prefix/ HEAD >g.tar &&
|
||||
rm a/.gitattributes'
|
||||
|
||||
test_expect_success \
|
||||
@ -126,6 +127,18 @@ test_expect_success \
|
||||
diff a/substfile2 f/a/substfile2
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
'extract substfiles from archive with prefix' \
|
||||
'(mkdir g && cd g && $TAR xf -) <g.tar'
|
||||
|
||||
test_expect_success \
|
||||
'validate substfile contents from archive with prefix' \
|
||||
'git log --max-count=1 "--pretty=format:A${SUBSTFORMAT}O" HEAD \
|
||||
>g/prefix/a/substfile1.expected &&
|
||||
diff g/prefix/a/substfile1.expected g/prefix/a/substfile1 &&
|
||||
diff a/substfile2 g/prefix/a/substfile2
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
'git archive --format=zip' \
|
||||
'git archive --format=zip HEAD >d.zip'
|
||||
|
Loading…
Reference in New Issue
Block a user