Compare commits

...

6 Commits

Author SHA1 Message Date
6ab58895cd GIT 1.0.4
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-12-24 00:02:08 -08:00
ac44f3e7c0 mailinfo: iconv does not like "latin-1" -- should spell it "latin1"
This was a stupid typo that did not follow

	http://www.iana.org/assignments/character-sets

Long noticed but neglected by JC, but finally reported by
Marco.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-12-23 23:56:52 -08:00
9a84074d08 ls-files --full-name: usage string and documentation.
Somehow this option was not mentioned anywhere in the
documentation nor the usage string.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-12-23 15:51:33 -08:00
695bf722da merge --no-commit: tweak message
We did not distinguish the case the user asked not to make a
commit with --no-commit flag and the automerge failed.  Tell
these cases apart and phrase dying message differently.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-12-23 15:48:09 -08:00
bb5ebed731 show-branch: usability updates.
This does three things:

 . It simplifies the logic to handle the case in which no
   refs are given on the command line, and fixes the bug
   when only "--heads" is specified.  Earlier we showed
   them twice.

 . It avoids to add the same ref twice.

 . It sorts the glob result (e.g. "git show-branch
   'tags/v1.0*'") according to a more version friendly
   sort order.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-12-23 14:16:19 -08:00
c5ced64578 check_packed_git_idx(): check integrity of the idx file itself.
Although pack-check.c had routine to verify the checksum for the
pack index file itself, the core did not check it before using
it.

This is stolen from the patch to tighten packname requirements.

Signed-off-by: Junio C Hamano <junkio@cox.net>
(cherry picked from 797bd6f490 commit)
2005-12-23 14:14:28 -08:00
9 changed files with 109 additions and 17 deletions

View File

@ -13,7 +13,8 @@ SYNOPSIS
(-[c|d|o|i|s|u|k|m])\*
[-x <pattern>|--exclude=<pattern>]
[-X <file>|--exclude-from=<file>]
[--exclude-per-directory=<file>] [--] [<file>]\*
[--exclude-per-directory=<file>]
[--full-name] [--] [<file>]\*
DESCRIPTION
-----------
@ -77,6 +78,12 @@ OPTIONS
K:: to be killed
? other
--full-name::
When run from a subdirectory, the command usually
outputs paths relative to the current directory. This
option forces paths to be output relative to the project
top directory.
--::
Do not interpret any more arguments as options.

View File

@ -55,7 +55,7 @@ all:
# Define USE_STDEV below if you want git to care about the underlying device
# change being considered an inode change from the update-cache perspective.
GIT_VERSION = 1.0.3
GIT_VERSION = 1.0.4
# CFLAGS and LDFLAGS are for the users to override from the command line.

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
git-core (1.0.4-0) unstable; urgency=low
* GIT 1.0.4.
-- Junio C Hamano <junkio@cox.net> Sat, 24 Dec 2005 00:01:20 -0800
git-core (1.0.3-0) unstable; urgency=low
* GIT 1.0.3 maintenance release.

View File

@ -209,6 +209,7 @@ case "$use_strategies" in
esac
result_tree= best_cnt=-1 best_strategy= wt_strategy=
merge_was_ok=
for strategy in $use_strategies
do
test "$wt_strategy" = '' || {
@ -228,6 +229,7 @@ do
exit=$?
if test "$no_commit" = t && test "$exit" = 0
then
merge_was_ok=t
exit=1 ;# pretend it left conflicts.
fi
@ -293,4 +295,11 @@ do
done >"$GIT_DIR/MERGE_HEAD"
echo $merge_msg >"$GIT_DIR/MERGE_MSG"
die "Automatic merge failed/prevented; fix up by hand"
if test "$merge_was_ok" = t
then
echo >&2 \
"Automatic merge went well; stopped before committing as requested"
exit 0
else
die "Automatic merge failed; fix up by hand"
fi

View File

@ -562,7 +562,7 @@ static void verify_pathspec(void)
static const char ls_files_usage[] =
"git-ls-files [-z] [-t] (--[cached|deleted|others|stage|unmerged|killed|modified])* "
"[ --ignored ] [--exclude=<pattern>] [--exclude-from=<file>] "
"[ --exclude-per-directory=<filename> ] [--] [<file>]*";
"[ --exclude-per-directory=<filename> ] [--full-name] [--] [<file>]*";
int main(int argc, const char **argv)
{

View File

@ -472,7 +472,7 @@ static void convert_to_utf8(char *line, char *charset)
char *in, *out;
size_t insize, outsize, nrc;
char outbuf[4096]; /* cheat */
static char latin_one[] = "latin-1";
static char latin_one[] = "latin1";
char *input_charset = *charset ? charset : latin_one;
iconv_t conv = iconv_open(metainfo_charset, input_charset);

View File

@ -321,12 +321,16 @@ struct packed_git *packed_git;
static int check_packed_git_idx(const char *path, unsigned long *idx_size_,
void **idx_map_)
{
SHA_CTX ctx;
unsigned char sha1[20];
void *idx_map;
unsigned int *index;
unsigned long idx_size;
int nr, i;
int fd = open(path, O_RDONLY);
int fd;
struct stat st;
fd = open(path, O_RDONLY);
if (fd < 0)
return -1;
if (fstat(fd, &st)) {
@ -364,6 +368,16 @@ static int check_packed_git_idx(const char *path, unsigned long *idx_size_,
if (idx_size != 4*256 + nr * 24 + 20 + 20)
return error("wrong index file size");
/*
* File checksum.
*/
SHA1_Init(&ctx);
SHA1_Update(&ctx, idx_map, idx_size-20);
SHA1_Final(sha1, &ctx);
if (memcmp(sha1, idx_map + idx_size - 20, 20))
return error("index checksum mismatch");
return 0;
}

View File

@ -284,10 +284,54 @@ static void show_one_commit(struct commit *commit, int no_name)
static char *ref_name[MAX_REVS + 1];
static int ref_name_cnt;
static const char *find_digit_prefix(const char *s, int *v)
{
const char *p;
int ver;
char ch;
for (p = s, ver = 0;
'0' <= (ch = *p) && ch <= '9';
p++)
ver = ver * 10 + ch - '0';
*v = ver;
return p;
}
static int version_cmp(const char *a, const char *b)
{
while (1) {
int va, vb;
a = find_digit_prefix(a, &va);
b = find_digit_prefix(b, &vb);
if (va != vb)
return va - vb;
while (1) {
int ca = *a;
int cb = *b;
if ('0' <= ca && ca <= '9')
ca = 0;
if ('0' <= cb && cb <= '9')
cb = 0;
if (ca != cb)
return ca - cb;
if (!ca)
break;
a++;
b++;
}
if (!*a && !*b)
return 0;
}
}
static int compare_ref_name(const void *a_, const void *b_)
{
const char * const*a = a_, * const*b = b_;
return strcmp(*a, *b);
return version_cmp(*a, *b);
}
static void sort_ref_range(int bottom, int top)
@ -299,8 +343,15 @@ static void sort_ref_range(int bottom, int top)
static int append_ref(const char *refname, const unsigned char *sha1)
{
struct commit *commit = lookup_commit_reference_gently(sha1, 1);
int i;
if (!commit)
return 0;
/* Avoid adding the same thing twice */
for (i = 0; i < ref_name_cnt; i++)
if (!strcmp(refname, ref_name[i]))
return 0;
if (MAX_REVS <= ref_name_cnt) {
fprintf(stderr, "warning: ignoring %s; "
"cannot handle more than %d refs\n",
@ -512,19 +563,17 @@ int main(int ac, char **av)
if (1 < independent + merge_base + (extra != 0))
usage(show_branch_usage);
/* If nothing is specified, show all branches by default */
if (ac + all_heads + all_tags == 0)
all_heads = 1;
if (all_heads + all_tags)
snarf_refs(all_heads, all_tags);
while (0 < ac) {
append_one_rev(*av);
ac--; av++;
}
if (ac) {
while (0 < ac) {
append_one_rev(*av);
ac--; av++;
}
}
else {
/* If no revs given, then add heads */
snarf_refs(1, 0);
}
if (!ref_name_cnt) {
fprintf(stderr, "No revs to be shown.\n");
exit(0);

View File

@ -163,6 +163,13 @@ test_expect_success \
else :;
fi &&
cp test-1-${packname_1}.pack test-3.pack &&
dd if=/dev/zero of=test-3.idx count=1 bs=1 conv=notrunc seek=1200 &&
if git-verify-pack test-3.pack
then false
else :;
fi &&
:'
test_expect_success \