projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] Add documentation for git-rename-script
[git.git]
/
rev-parse.c
diff --git
a/rev-parse.c
b/rev-parse.c
index
4c307cd
..
4bd58eb
100644
(file)
--- a/
rev-parse.c
+++ b/
rev-parse.c
@@
-15,6
+15,7
@@
static int do_rev_argument = 1;
static int output_revs = 0;
static int flags_only = 0;
static int no_flags = 0;
static int output_revs = 0;
static int flags_only = 0;
static int no_flags = 0;
+static int output_sq = 0;
#define NORMAL 0
#define REVERSED 1
#define NORMAL 0
#define REVERSED 1
@@
-49,19
+50,42
@@
static int is_rev_argument(const char *arg)
}
}
}
}
+static void show(const char *arg)
+{
+ if (output_sq) {
+ int sq = '\'', ch;
+
+ putchar(sq);
+ while ((ch = *arg++)) {
+ if (ch == sq)
+ fputs("'\\'", stdout);
+ putchar(ch);
+ }
+ putchar(sq);
+ putchar(' ');
+ }
+ else
+ puts(arg);
+}
+
static void show_rev(int type, const unsigned char *sha1)
{
if (no_revs)
return;
output_revs++;
static void show_rev(int type, const unsigned char *sha1)
{
if (no_revs)
return;
output_revs++;
- printf("%s%s\n", type == show_type ? "" : "^", sha1_to_hex(sha1));
+
+ /* Hexadecimal string plus possibly a carret;
+ * this does not have to be quoted even under output_sq.
+ */
+ printf("%s%s%c", type == show_type ? "" : "^", sha1_to_hex(sha1),
+ output_sq ? ' ' : '\n');
}
static void show_rev_arg(char *rev)
{
if (no_revs)
return;
}
static void show_rev_arg(char *rev)
{
if (no_revs)
return;
-
puts
(rev);
+
show
(rev);
}
static void show_norev(char *norev)
}
static void show_norev(char *norev)
@@
-70,7
+94,7
@@
static void show_norev(char *norev)
return;
if (revs_only)
return;
return;
if (revs_only)
return;
-
puts
(norev);
+
show
(norev);
}
static void show_arg(char *arg)
}
static void show_arg(char *arg)
@@
-97,6
+121,10
@@
static int get_parent(char *name, unsigned char *result, int idx)
return -1;
if (parse_commit(commit))
return -1;
return -1;
if (parse_commit(commit))
return -1;
+ if (!idx) {
+ memcpy(result, commit->object.sha1, 20);
+ return 0;
+ }
p = commit->parents;
while (p) {
if (!--idx) {
p = commit->parents;
while (p) {
if (!--idx) {
@@
-238,7
+266,7
@@
static int get_extended_sha1(char *name, unsigned char *sha1)
int len = strlen(name);
parent = 1;
int len = strlen(name);
parent = 1;
- if (len > 2 && name[len-1] >= '
1
' && name[len-1] <= '9') {
+ if (len > 2 && name[len-1] >= '
0
' && name[len-1] <= '9') {
parent = name[len-1] - '0';
len--;
}
parent = name[len-1] - '0';
len--;
}
@@
-324,6
+352,10
@@
int main(int argc, char **argv)
single_rev = 1;
continue;
}
single_rev = 1;
continue;
}
+ if (!strcmp(arg, "--sq")) {
+ output_sq = 1;
+ continue;
+ }
if (!strcmp(arg, "--not")) {
show_type ^= REVERSED;
continue;
if (!strcmp(arg, "--not")) {
show_type ^= REVERSED;
continue;