diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt
index 2f308ec..186f3bb 100644
--- a/Documentation/git-ls-files.txt
+++ b/Documentation/git-ls-files.txt
@@ -13,7 +13,8 @@
 		(-[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 @@
 	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.
 
diff --git a/Makefile b/Makefile
index 890f16b..8d03e0b 100644
--- a/Makefile
+++ b/Makefile
@@ -55,7 +55,7 @@
 # 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.
 
diff --git a/debian/changelog b/debian/changelog
index 53af1d6..88e5755 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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.
diff --git a/git-merge.sh b/git-merge.sh
index e50fbb1..0a158ef 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -209,6 +209,7 @@
 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 @@
     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 @@
 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
diff --git a/ls-files.c b/ls-files.c
index f3f1a6a..5e9ac71 100644
--- a/ls-files.c
+++ b/ls-files.c
@@ -562,7 +562,7 @@
 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)
 {
diff --git a/mailinfo.c b/mailinfo.c
index 9f95f37..0265a29 100644
--- a/mailinfo.c
+++ b/mailinfo.c
@@ -472,7 +472,7 @@
 	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);
 
diff --git a/sha1_file.c b/sha1_file.c
index d451a94..6b7577d 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -321,12 +321,16 @@
 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 @@
 	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;
 }
 
diff --git a/show-branch.c b/show-branch.c
index 3fe62b7..15b1968 100644
--- a/show-branch.c
+++ b/show-branch.c
@@ -284,10 +284,54 @@
 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 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 @@
 	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);
diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh
index 5b50536..7dfb1ab 100755
--- a/t/t5300-pack-object.sh
+++ b/t/t5300-pack-object.sh
@@ -163,6 +163,13 @@
      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 \
