Browse Source

Merge branch 'jc/rev-list' into next

* jc/rev-list:
  rev-list --objects-edge
  Merge branch 'jc/merge-msg'
  Merge branch 'jc/mv'
  Documentation: fix typo in rev-parse --short option description.
maint
Junio C Hamano 19 years ago
parent
commit
8c0db2f519
  1. 2
      Documentation/git-rev-parse.txt
  2. 34
      rev-list.c
  3. 1
      rev-parse.c

2
Documentation/git-rev-parse.txt

@ -80,7 +80,7 @@ OPTIONS
--git-dir:: --git-dir::
Show `$GIT_DIR` if defined else show the path to the .git directory. Show `$GIT_DIR` if defined else show the path to the .git directory.


--short, short=number:: --short, --short=number::
Instead of outputting the full SHA1 values of object names try to Instead of outputting the full SHA1 values of object names try to
abbriviate them to a shorter unique name. When no length is specified abbriviate them to a shorter unique name. When no length is specified
7 is used. The minimum length is 4. 7 is used. The minimum length is 4.

34
rev-list.c

@ -30,7 +30,7 @@ static const char rev_list_usage[] =
" --date-order\n" " --date-order\n"
" formatting output:\n" " formatting output:\n"
" --parents\n" " --parents\n"
" --objects\n" " --objects | --objects-edge\n"
" --unpacked\n" " --unpacked\n"
" --header | --pretty\n" " --header | --pretty\n"
" --abbrev=nr | --no-abbrev\n" " --abbrev=nr | --no-abbrev\n"
@ -44,6 +44,7 @@ static int bisect_list = 0;
static int tag_objects = 0; static int tag_objects = 0;
static int tree_objects = 0; static int tree_objects = 0;
static int blob_objects = 0; static int blob_objects = 0;
static int edge_hint = 0;
static int verbose_header = 0; static int verbose_header = 0;
static int abbrev = DEFAULT_ABBREV; static int abbrev = DEFAULT_ABBREV;
static int show_parents = 0; static int show_parents = 0;
@ -430,16 +431,30 @@ static struct commit_list *find_bisection(struct commit_list *list)
return best; return best;
} }


static void mark_edge_parents_uninteresting(struct commit *commit)
{
struct commit_list *parents;

for (parents = commit->parents; parents; parents = parents->next) {
struct commit *parent = parents->item;
if (!(parent->object.flags & UNINTERESTING))
continue;
mark_tree_uninteresting(parent->tree);
if (edge_hint)
printf("-%s\n", sha1_to_hex(parent->object.sha1));
}
}

static void mark_edges_uninteresting(struct commit_list *list) static void mark_edges_uninteresting(struct commit_list *list)
{ {
for ( ; list; list = list->next) { for ( ; list; list = list->next) {
struct commit_list *parents = list->item->parents; struct commit *commit = list->item;


for ( ; parents; parents = parents->next) { if (commit->object.flags & UNINTERESTING) {
struct commit *commit = parents->item; mark_tree_uninteresting(commit->tree);
if (commit->object.flags & UNINTERESTING) continue;
mark_tree_uninteresting(commit->tree);
} }
mark_edge_parents_uninteresting(commit);
} }
} }


@ -843,6 +858,13 @@ int main(int argc, const char **argv)
blob_objects = 1; blob_objects = 1;
continue; continue;
} }
if (!strcmp(arg, "--objects-edge")) {
tag_objects = 1;
tree_objects = 1;
blob_objects = 1;
edge_hint = 1;
continue;
}
if (!strcmp(arg, "--unpacked")) { if (!strcmp(arg, "--unpacked")) {
unpacked = 1; unpacked = 1;
limited = 1; limited = 1;

1
rev-parse.c

@ -43,6 +43,7 @@ static int is_rev_argument(const char *arg)
"--min-age=", "--min-age=",
"--no-merges", "--no-merges",
"--objects", "--objects",
"--objects-edge",
"--parents", "--parents",
"--pretty", "--pretty",
"--show-breaks", "--show-breaks",

Loading…
Cancel
Save