mirror of
https://github.com/git/git.git
synced 2026-03-13 10:23:30 +01:00
Merge branch 'maint' of git://repo.or.cz/alt-git
This commit is contained in:
27
Documentation/RelNotes-1.5.2.3.txt
Normal file
27
Documentation/RelNotes-1.5.2.3.txt
Normal 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.
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'::
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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='
|
||||
'
|
||||
|
||||
6
Makefile
6
Makefile
@@ -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
|
||||
|
||||
2
RelNotes
2
RelNotes
@@ -1 +1 @@
|
||||
Documentation/RelNotes-1.5.2.2.txt
|
||||
Documentation/RelNotes-1.5.2.3.txt
|
||||
@@ -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)
|
||||
|
||||
3
fetch.c
3
fetch.c
@@ -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)
|
||||
|
||||
@@ -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)|' \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {}} {
|
||||
|
||||
20
reachable.c
20
reachable.c
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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' \
|
||||
|
||||
@@ -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"'
|
||||
|
||||
Reference in New Issue
Block a user