aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-02-25 11:08:47 -0800
committerJunio C Hamano <junkio@cox.net>2007-02-25 11:08:47 -0800
commit2c7ca1fcf19d3803a225130491e26dca86d1781d (patch)
treea123f8cce38b69141bc011dad157c94d3781b779
parent7bd59dee5b4b42f2ed233141e33713a7f012dd22 (diff)
parentd2dc6222d4e2f7fa5efc82175d14d60d7b804687 (diff)
downloadgit-2c7ca1fcf19d3803a225130491e26dca86d1781d.tar.gz
git-2c7ca1fcf19d3803a225130491e26dca86d1781d.tar.xz
Merge branch 'maint'
* maint: Add Release Notes to prepare for 1.5.0.2 Allow arbitrary number of arguments to git-pack-objects rerere: do not deal with symlinks. rerere: do not skip two conflicted paths next to each other. Don't modify CREDITS-FILE if it hasn't changed.
-rw-r--r--Documentation/RelNotes-1.5.0.2.txt59
-rw-r--r--builtin-pack-objects.c12
-rw-r--r--builtin-rerere.c16
-rwxr-xr-xgit-gui/CREDITS-GEN25
4 files changed, 97 insertions, 15 deletions
diff --git a/Documentation/RelNotes-1.5.0.2.txt b/Documentation/RelNotes-1.5.0.2.txt
new file mode 100644
index 000000000..4dc134485
--- /dev/null
+++ b/Documentation/RelNotes-1.5.0.2.txt
@@ -0,0 +1,59 @@
+GIT v1.5.0.2 Release Notes
+==========================
+
+Fixes since v1.5.0.1
+--------------------
+
+* Bugfixes
+
+ - 'git diff maint master next' did not correctly give combined
+ diff across three trees.
+
+ - 'git fast-import' portability fix for Solaris.
+
+ - 'git show-ref --verify' without arguments did not error out
+ but segfaulted.
+
+ - 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra
+ slashes after a/ and b/.
+
+ - 'git format-patch' produced too long filenames if the commit
+ message had too long line at the beginning.
+
+ - Running 'make all' and then without changing anything
+ running 'make install' still rebuilt some files. This
+ was inconvenient when building as yourself and then
+ installing as root (especially problematic when the source
+ directory is on NFS and root is mapped to nobody).
+
+ - 'git-rerere' failed to deal with two unconflicted paths that
+ sorted next to each other.
+
+ - 'git-rerere' attempted to open(2) a symlink and failed if
+ there was a conflict. Since a conflicting change to a
+ symlink would not benefit from rerere anyway, the command
+ now ignores conflicting changes to symlinks.
+
+ - 'git-repack' did not like to pass more than 64 arguments
+ internally to underlying 'rev-list' logic, which made it
+ impossible to repack after accumulating many (small) packs
+ in the repository.
+
+* Documentation updates
+
+ - added and clarified core.bare, core.legacyheaders configurations.
+
+ - updated "git-clone --depth" documentation.
+
+* Assorted git-gui fixes.
+
+
+--
+exec >/var/tmp/1
+O=v1.5.0.1-35-gffa84ff
+echo O=`git describe maint`
+git shortlog --no-merges $O..maint
+
+#Local Variables:
+#mode: text
+#End:
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index b5ed9ce2c..426ffddff 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
@@ -1551,9 +1551,12 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
int use_internal_rev_list = 0;
int thin = 0;
int i;
- const char *rp_av[64];
+ const char **rp_av;
+ int rp_ac_alloc = 64;
int rp_ac;
+ rp_av = xcalloc(rp_ac_alloc, sizeof(*rp_av));
+
rp_av[0] = "pack-objects";
rp_av[1] = "--objects"; /* --thin will make it --objects-edge */
rp_ac = 2;
@@ -1626,8 +1629,11 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
!strcmp("--reflog", arg) ||
!strcmp("--all", arg)) {
use_internal_rev_list = 1;
- if (ARRAY_SIZE(rp_av) - 1 <= rp_ac)
- die("too many internal rev-list options");
+ if (rp_ac >= rp_ac_alloc - 1) {
+ rp_ac_alloc = alloc_nr(rp_ac_alloc);
+ rp_av = xrealloc(rp_av,
+ rp_ac_alloc * sizeof(*rp_av));
+ }
rp_av[rp_ac++] = arg;
continue;
}
diff --git a/builtin-rerere.c b/builtin-rerere.c
index dd1d4c1c1..b8867ab4a 100644
--- a/builtin-rerere.c
+++ b/builtin-rerere.c
@@ -154,13 +154,17 @@ static int find_conflict(struct path_list *conflict)
return error("Could not read index");
for (i = 0; i + 2 < active_nr; i++) {
struct cache_entry *e1 = active_cache[i];
- struct cache_entry *e2 = active_cache[i + 1];
- struct cache_entry *e3 = active_cache[i + 2];
- if (ce_stage(e1) == 1 && ce_stage(e2) == 2 &&
- ce_stage(e3) == 3 && ce_same_name(e1, e2) &&
- ce_same_name(e1, e3)) {
+ struct cache_entry *e2 = active_cache[i+1];
+ struct cache_entry *e3 = active_cache[i+2];
+ if (ce_stage(e1) == 1 &&
+ ce_stage(e2) == 2 &&
+ ce_stage(e3) == 3 &&
+ ce_same_name(e1, e2) && ce_same_name(e1, e3) &&
+ S_ISREG(ntohl(e1->ce_mode)) &&
+ S_ISREG(ntohl(e2->ce_mode)) &&
+ S_ISREG(ntohl(e3->ce_mode))) {
path_list_insert((const char *)e1->name, conflict);
- i += 3;
+ i += 2;
}
}
return 0;
diff --git a/git-gui/CREDITS-GEN b/git-gui/CREDITS-GEN
index da2c07629..d1b0f8635 100755
--- a/git-gui/CREDITS-GEN
+++ b/git-gui/CREDITS-GEN
@@ -20,8 +20,8 @@ tree_search ()
generate_credits ()
{
tip=$1 &&
- rm -f $CF &&
- git shortlog -n -s $tip | sed 's/: .*$//' >$CF || exit
+ rm -f "$2" &&
+ git shortlog -n -s $tip | sed 's/: .*$//' >"$2" || exit
}
# Always use the tarball credits file if found, just
@@ -36,10 +36,14 @@ generate_credits ()
# that fact.
#
+credits_tmp=/var/tmp/gitgui-credits-$$
+trap 'rm -f "$credits_tmp"' 0
+
+orig="$credits_tmp"
+
if test -f credits
then
- rm -f $CF &&
- cp credits $CF || exit
+ orig=credits
elif prefix="$(git rev-parse --show-prefix 2>/dev/null)" &&
test -n "$prefix" &&
head=$(git rev-list --max-count=1 HEAD -- . 2>/dev/null) &&
@@ -47,12 +51,21 @@ elif prefix="$(git rev-parse --show-prefix 2>/dev/null)" &&
tip=$(tree_search $head $tree) &&
test -n "$tip"
then
- generate_credits $tip || exit
+ generate_credits $tip "$orig" || exit
elif tip="$(git rev-parse --verify HEAD 2>/dev/null)" &&
test -n "$tip"
then
- generate_credits $tip || exit
+ generate_credits $tip "$orig" || exit
else
echo "error: Cannot locate authorship information." >&2
exit 1
fi
+
+if test -f "$orig" && cmp -s "$orig" "$CF"
+then
+ : noop
+else
+ rm -f "$CF" &&
+ cat "$orig" >"$CF"
+fi
+