Merge branch 'maint' of git://repo.or.cz/alt-git

This commit is contained in:
Johannes Sixt
2007-07-03 09:38:49 +02:00
17 changed files with 132 additions and 37 deletions

View File

@@ -0,0 +1,27 @@
GIT v1.5.2.3 Release Notes
==========================
Fixes since v1.5.2.2
--------------------
* Bugfixes
- Version 2 pack index format was introduced in version 1.5.2
to support pack files that has offset that cannot be
represented in 32-bit. The runtime code to validate such
an index mishandled such an index for an empty pack.
- Commit walkers (most notably, fetch over http protocol)
tried to traverse commit objects contained in trees (aka
subproject); they shouldn't.
- A build option NO_R_TO_GCC_LINKER was not explained in Makefile
comment correctly.
* Documentation Fixes and Updates
- git-config --regexp was not documented properly.
- git-repack -a was not documented properly.
- git-remote -n was not documented properly.

View File

@@ -263,7 +263,7 @@ You probably do not need to adjust this value.
+
Common unit suffixes of 'k', 'm', or 'g' are supported.
core.excludeFile::
core.excludesfile::
In addition to '.gitignore' (per-directory) and
'.git/info/exclude', git looks into this file for patterns
of files which are not meant to be tracked. See

View File

@@ -14,6 +14,7 @@ SYNOPSIS
'git-config' [--system | --global] --replace-all name [value [value_regex]]
'git-config' [--system | --global] [type] --get name [value_regex]
'git-config' [--system | --global] [type] --get-all name [value_regex]
'git-config' [--system | --global] [type] --get-regexp name_regex [value_regex]
'git-config' [--system | --global] --unset name [value_regex]
'git-config' [--system | --global] --unset-all name [value_regex]
'git-config' [--system | --global] --rename-section old_name new_name
@@ -73,6 +74,7 @@ OPTIONS
--get-regexp::
Like --get-all, but interprets the name as a regular expression.
Also outputs the key names.
--global::
For writing options: write to global ~/.gitconfig file rather than

View File

@@ -49,6 +49,9 @@ branch the `HEAD` at the remote repository actually points at.
'show'::
Gives some information about the remote <name>.
+
With `-n` option, the remote heads are not queried first with
`git ls-remote <name>`; cached information is used instead.
'prune'::
@@ -56,6 +59,10 @@ Deletes all stale tracking branches under <name>.
These stale branches have already been removed from the remote repository
referenced by <name>, but are still locally available in
"remotes/<name>".
+
With `-n` option, the remote heads are not confirmed first with `git
ls-remote <name>`; cached information is used instead. Use with
caution.
'update'::

View File

@@ -14,7 +14,8 @@ DESCRIPTION
-----------
This script is used to combine all objects that do not currently
reside in a "pack", into a pack.
reside in a "pack", into a pack. It can also be used to re-organise
existing packs into a single, more efficient pack.
A pack is a collection of objects, individually compressed, with
delta compression applied, stored in a single file, with an
@@ -28,11 +29,13 @@ OPTIONS
-a::
Instead of incrementally packing the unpacked objects,
pack everything available into a single pack.
pack everything referenced into a single pack.
Especially useful when packing a repository that is used
for private development and there is no need to worry
about people fetching via dumb file transfer protocols
from it. Use with '-d'.
about people fetching via dumb protocols from it. Use
with '-d'. This will clean up the objects that `git prune`
leaves behind, but `git fsck --full` shows as
dangling.
-d::
After packing, if the newly created packs make some

View File

@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
DEF_VER=v1.5.2.2.GIT
DEF_VER=v1.5.2.3.GIT
LF='
'

View File

@@ -94,9 +94,9 @@ all:
# Define OLD_ICONV if your library has an old iconv(), where the second
# (input buffer pointer) parameter is declared with type (const char **).
#
# Define NO_R_TO_GCC if your gcc does not like "-R/path/lib" that
# tells runtime paths to dynamic libraries; "-Wl,-rpath=/path/lib"
# is used instead.
# Define NO_R_TO_GCC_LINKER if your gcc does not like "-R/path/lib"
# that tells runtime paths to dynamic libraries;
# "-Wl,-rpath=/path/lib" is used instead.
#
# Define USE_NSEC below if you want git to care about sub-second file mtimes
# and ctimes. Note that you need recent glibc (at least 2.2.4) for this, and

View File

@@ -1 +1 @@
Documentation/RelNotes-1.5.2.2.txt
Documentation/RelNotes-1.5.2.3.txt

View File

@@ -38,8 +38,12 @@ static int show_config(const char* key_, const char* value_)
regexec(regexp, (value_?value_:""), 0, NULL, 0)))
return 0;
if (show_keys)
printf("%s ", key_);
if (show_keys) {
if (value_)
printf("%s ", key_);
else
printf("%s", key_);
}
if (seen && !do_all)
dup_error = 1;
if (type == T_INT)

View File

@@ -46,6 +46,9 @@ static int process_tree(struct tree *tree)
while (tree_entry(&desc, &entry)) {
struct object *obj = NULL;
/* submodule commits are not stored in the superproject */
if (S_ISDIRLNK(entry.mode))
continue;
if (S_ISDIR(entry.mode)) {
struct tree *tree = lookup_tree(entry.sha1);
if (tree)

View File

@@ -7,6 +7,8 @@ GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
@$(SHELL_PATH) ./GIT-VERSION-GEN
-include GIT-VERSION-FILE
uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
SCRIPT_SH = git-gui.sh
GITGUI_BUILT_INS = git-citool
ALL_PROGRAMS = $(GITGUI_BUILT_INS) $(patsubst %.sh,%,$(SCRIPT_SH))
@@ -58,11 +60,15 @@ exedir_SQ = $(subst ','\'',$(exedir))
$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
$(QUIET_GEN)rm -f $@ $@+ && \
GITGUI_RELATIVE= && \
if test '$(exedir_SQ)' = '$(libdir_SQ)'; then \
GITGUI_RELATIVE=1; \
if test "$(uname_O)" = Cygwin; \
then GITGUI_RELATIVE= ; \
else GITGUI_RELATIVE=1; \
fi; \
fi && \
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
-e 's|^exec wish "$$0"|exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' \
-e 's|^ exec wish "$$0"| exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' \
-e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
-e 's|@@GITGUI_RELATIVE@@|'$$GITGUI_RELATIVE'|' \
-e $$GITGUI_RELATIVE's|@@GITGUI_LIBDIR@@|$(libdir_SQ)|' \

View File

@@ -1,6 +1,12 @@
#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" -- "$@"
if test "z$*" = zversion \
|| test "z$*" = z--version; \
then \
echo 'git-gui version @@GITGUI_VERSION@@'; \
exit; \
fi; \
exec wish "$0" -- "$@"
set appvers {@@GITGUI_VERSION@@}
set copyright {
@@ -271,11 +277,6 @@ proc tk_optionMenu {w varName args} {
##
## version check
if {{--version} eq $argv || {version} eq $argv} {
puts "git-gui version $appvers"
exit
}
set req_maj 1
set req_min 5
@@ -1544,8 +1545,7 @@ if {[is_MacOSX]} {
# -- Tools Menu
#
if {[file exists /usr/local/miga/lib/gui-miga]
&& [file exists .pvcsrc]} {
if {[is_Cygwin] && [file exists /usr/local/miga/lib/gui-miga]} {
proc do_miga {} {
global ui_status_value
if {![lock_index update]} return

View File

@@ -272,6 +272,8 @@ constructor new {i_commit i_path} {
set cursorW %W
tk_popup $w.ctxm %X %Y
"
bind $i <Shift-Tab> "[list focus $w_cviewer];break"
bind $i <Tab> "[list focus $w_cviewer];break"
}
foreach i [concat $w_columns $w_cviewer] {
@@ -287,8 +289,10 @@ constructor new {i_commit i_path} {
bind $i <Control-Key-f> {catch {%W yview scroll 1 pages};break}
}
bind $w_cviewer <Shift-Tab> "[list focus $w_file];break"
bind $w_cviewer <Tab> "[list focus $w_file];break"
bind $w_cviewer <Button-1> [list focus $w_cviewer]
bind $top <Visibility> [list focus $top]
bind $w_file <Visibility> [list focus $w_file]
grid configure $w.header -sticky ew
grid configure $w.file_pane -sticky nsew
@@ -483,7 +487,11 @@ method _read_file {fd jump} {
} ifdeleted { catch {close $fd} }
method _exec_blame {cur_w cur_d options cur_s} {
set cmd [list nice git blame]
set cmd [list]
if {![is_Windows] || [is_Cygwin]} {
lappend cmd nice
}
lappend cmd git blame
set cmd [concat $cmd $options]
lappend cmd --incremental
if {$commit eq {}} {

View File

@@ -21,6 +21,14 @@ static void process_blob(struct blob *blob,
/* Nothing to do, really .. The blob lookup was the important part */
}
static void process_gitlink(const unsigned char *sha1,
struct object_array *p,
struct name_path *path,
const char *name)
{
/* I don't think we want to recurse into this, really. */
}
static void process_tree(struct tree *tree,
struct object_array *p,
struct name_path *path,
@@ -47,6 +55,8 @@ static void process_tree(struct tree *tree,
while (tree_entry(&desc, &entry)) {
if (S_ISDIR(entry.mode))
process_tree(lookup_tree(entry.sha1), p, &me, entry.path);
else if (S_ISDIRLNK(entry.mode))
process_gitlink(entry.sha1, p, &me, entry.path);
else
process_blob(lookup_blob(entry.sha1), p, &me, entry.path);
}
@@ -159,6 +169,16 @@ static void add_cache_refs(struct rev_info *revs)
read_cache();
for (i = 0; i < active_nr; i++) {
/*
* The index can contain blobs and GITLINKs, GITLINKs are hashes
* that don't actually point to objects in the repository, it's
* almost guaranteed that they are NOT blobs, so we don't call
* lookup_blob() on them, to avoid populating the hash table
* with invalid information
*/
if (S_ISDIRLNK(ntohl(active_cache[i]->ce_mode)))
continue;
lookup_blob(active_cache[i]->sha1);
/*
* We could add the blobs to the pending list, but quite

View File

@@ -517,7 +517,10 @@ static int check_packed_git_idx(const char *path, struct packed_git *p)
* for offsets larger than 2^31.
*/
unsigned long min_size = 8 + 4*256 + nr*(20 + 4 + 4) + 20 + 20;
if (idx_size < min_size || idx_size > min_size + (nr - 1)*8) {
unsigned long max_size = min_size;
if (nr)
max_size += (nr - 1)*8;
if (idx_size < min_size || idx_size > max_size) {
munmap(idx_map, idx_size);
return error("wrong index file size in %s", path);
}

View File

@@ -283,6 +283,12 @@ EOF
test_expect_success 'get variable with no value' \
'git-config --get novalue.variable ^$'
echo novalue.variable > expect
test_expect_success 'get-regexp variable with no value' \
'git-config --get-regexp novalue > output &&
cmp output expect'
git-config > output 2>&1
test_expect_success 'no arguments, but no crash' \

View File

@@ -34,6 +34,12 @@ doit() {
echo $commit
}
# E---D---C---B---A
# \'-_ \ \
# \ `---------G \
# \ \
# F----------------H
# Setup...
E=$(doit 5 E)
D=$(doit 4 D $E)
@@ -44,6 +50,18 @@ A=$(doit 1 A $B)
G=$(doit 7 G $B $E)
H=$(doit 8 H $A $F)
test_expect_success 'compute merge-base (single)' \
'MB=$(git-merge-base G H) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/B"'
test_expect_success 'compute merge-base (all)' \
'MB=$(git-merge-base --all G H) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/B"'
test_expect_success 'compute merge-base with show-branch' \
'MB=$(git-show-branch --merge-base G H) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/B"'
# Setup for second test to demonstrate that relying on timestamps in a
# distributed SCM to provide a _consistent_ partial ordering of commits
# leads to insanity.
@@ -81,18 +99,6 @@ R2=$(doit 3 R2 $R1)
PL=$(doit 4 PL $L2 $C2)
PR=$(doit 4 PR $C2 $R2)
test_expect_success 'compute merge-base (single)' \
'MB=$(git-merge-base G H) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/B"'
test_expect_success 'compute merge-base (all)' \
'MB=$(git-merge-base --all G H) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/B"'
test_expect_success 'compute merge-base with show-branch' \
'MB=$(git-show-branch --merge-base G H) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/B"'
test_expect_success 'compute merge-base (single)' \
'MB=$(git-merge-base PL PR) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/C2"'