Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
Sort branch names snarfed from refs/ hierarchy.
author
Junio C Hamano
<junkio@cox.net>
Thu, 25 Aug 2005 06:26:20 +0000
(23:26 -0700)
committer
Junio C Hamano
<junkio@cox.net>
Thu, 25 Aug 2005 06:26:20 +0000
(23:26 -0700)
Signed-off-by: Junio C Hamano <junkio@cox.net>
show-branch.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
8572aa8
)
diff --git
a/show-branch.c
b/show-branch.c
index fc827ee4972254661f5fc09cb7f8890b1d007646..2a4e1768adc88e25dc108d6c9b323da2c52f5b1c 100644
(file)
--- a/
show-branch.c
+++ b/
show-branch.c
@@
-141,6
+141,18
@@
static void show_one_commit(struct commit *commit, char **head_name)
static char *ref_name[MAX_REVS + 1];
static int ref_name_cnt;
static char *ref_name[MAX_REVS + 1];
static int ref_name_cnt;
+static int compare_ref_name(const void *a_, const void *b_)
+{
+ const char * const*a = a_, * const*b = b_;
+ return strcmp(*a, *b);
+}
+
+static void sort_ref_range(int bottom, int top)
+{
+ qsort(ref_name + bottom, top - bottom, sizeof(ref_name[0]),
+ compare_ref_name);
+}
+
static int append_ref(const char *refname, const unsigned char *sha1)
{
struct commit *commit = lookup_commit_reference_gently(sha1, 1);
static int append_ref(const char *refname, const unsigned char *sha1)
{
struct commit *commit = lookup_commit_reference_gently(sha1, 1);
@@
-161,7
+173,7
@@
static int append_head_ref(const char *refname, const unsigned char *sha1)
{
if (strncmp(refname, "refs/heads/", 11))
return 0;
{
if (strncmp(refname, "refs/heads/", 11))
return 0;
- return append_ref(refname +
5
, sha1);
+ return append_ref(refname +
11
, sha1);
}
static int append_tag_ref(const char *refname, const unsigned char *sha1)
}
static int append_tag_ref(const char *refname, const unsigned char *sha1)
@@
-173,10
+185,16
@@
static int append_tag_ref(const char *refname, const unsigned char *sha1)
static void snarf_refs(int head, int tag)
{
static void snarf_refs(int head, int tag)
{
- if (head)
+ if (head) {
+ int orig_cnt = ref_name_cnt;
for_each_ref(append_head_ref);
for_each_ref(append_head_ref);
- if (tag)
+ sort_ref_range(orig_cnt, ref_name_cnt);
+ }
+ if (tag) {
+ int orig_cnt = ref_name_cnt;
for_each_ref(append_tag_ref);
for_each_ref(append_tag_ref);
+ sort_ref_range(orig_cnt, ref_name_cnt);
+ }
}
static int rev_is_head(char *head_path, int headlen,
}
static int rev_is_head(char *head_path, int headlen,