projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] When copying or renaming, keep the mode, please
[git.git]
/
sha1_name.c
diff --git
a/sha1_name.c
b/sha1_name.c
index
df3ba2d
..
fdd3214
100644
(file)
--- a/
sha1_name.c
+++ b/
sha1_name.c
@@
-148,7
+148,7
@@
static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
};
const char **p;
};
const char **p;
- if (!get_sha1_hex(str, sha1))
+ if (
len == 40 &&
!get_sha1_hex(str, sha1))
return 0;
for (p = prefix; *p; p++) {
return 0;
for (p = prefix; *p; p++) {
@@
-202,16
+202,15
@@
static int get_sha1_1(const char *name, int len, unsigned char *sha1)
parent = name[len-1] - '0';
len -= 2;
}
parent = name[len-1] - '0';
len -= 2;
}
- else if (len > 1 && name[len-1] == '^')
+ else if (len > 1 && name[len-1] == '^')
{
parent = 1;
parent = 1;
- else
+ len--;
+ } else
parent = -1;
parent = -1;
- if (0 <= parent) {
- ret = get_parent(name, len-1, sha1, parent);
- if (!ret)
- return 0;
- }
+ if (parent >= 0)
+ return get_parent(name, len, sha1, parent);
+
ret = get_sha1_basic(name, len, sha1);
if (!ret)
return 0;
ret = get_sha1_basic(name, len, sha1);
if (!ret)
return 0;