Hello community,
here is the log from the commit of package git
checked in at Mon Aug 6 23:09:17 CEST 2007.
--------
--- git/git.changes 2007-07-05 02:35:43.000000000 +0200
+++ /mounts/work_src_done/STABLE/git/git.changes 2007-08-06 23:00:56.000000000 +0200
@@ -1,0 +2,15 @@
+Mon Aug 6 23:00:14 CEST 2007 - dmueller@suse.de
+
+- update to 1.5.2.4:
+ * "git checkout" failed to switch back and forth between
+ branches, one of which has "frotz -> xyzzy" symlink and
+ file "xyzzy/filfre", while the other one has a file
+ "frotz/filfre".
+ * "git prune" used to segfault upon seeing a commit that is
+ referred to by a tree object (aka "subproject").
+ * "git diff --name-status --no-index" mishandled an added file.
+ * "git apply --reverse --whitespace=warn" still complained
+ about whitespaces that a forward application would have
+ introduced.
+
+-------------------------------------------------------------------
Old:
----
git-1.5.2.3.tar.bz2
New:
----
git-1.5.2.4.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ git.spec ++++++
--- /var/tmp/diff_new_pack.x31334/_old 2007-08-06 23:07:17.000000000 +0200
+++ /var/tmp/diff_new_pack.x31334/_new 2007-08-06 23:07:17.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package git (Version 1.5.2.3)
+# spec file for package git (Version 1.5.2.4)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -12,7 +12,7 @@
Name: git
BuildRequires: asciidoc curl-devel sgml-skel xmlto
-Version: 1.5.2.3
+Version: 1.5.2.4
Release: 1
Summary: Fast, scalable, distributed revision control system
License: GPL v2 or later
@@ -228,6 +228,18 @@
/usr/share/git-gui
%changelog
+* Mon Aug 06 2007 - dmueller@suse.de
+- update to 1.5.2.4:
+ * "git checkout" failed to switch back and forth between
+ branches, one of which has "frotz -> xyzzy" symlink and
+ file "xyzzy/filfre", while the other one has a file
+ "frotz/filfre".
+ * "git prune" used to segfault upon seeing a commit that is
+ referred to by a tree object (aka "subproject").
+ * "git diff --name-status --no-index" mishandled an added file.
+ * "git apply --reverse --whitespace=warn" still complained
+ about whitespaces that a forward application would have
+ introduced.
* Thu Jul 05 2007 - dmueller@suse.de
- Update to 1.5.2.3:
* fix many segfaults with the SVN gateway
++++++ git-1.5.2.3.tar.bz2 -> git-1.5.2.4.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/builtin-apply.c new/git-1.5.2.4/builtin-apply.c
--- old/git-1.5.2.3/builtin-apply.c 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/builtin-apply.c 2007-07-12 22:34:23.000000000 +0200
@@ -1003,12 +1003,16 @@
trailing++;
break;
case '-':
+ if (apply_in_reverse &&
+ new_whitespace != nowarn_whitespace)
+ check_whitespace(line, len);
deleted++;
oldlines--;
trailing = 0;
break;
case '+':
- if (new_whitespace != nowarn_whitespace)
+ if (!apply_in_reverse &&
+ new_whitespace != nowarn_whitespace)
check_whitespace(line, len);
added++;
newlines--;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/diff.c new/git-1.5.2.4/diff.c
--- old/git-1.5.2.3/diff.c 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/diff.c 2007-07-12 22:34:23.000000000 +0200
@@ -2407,7 +2407,8 @@
printf("%s ",
diff_unique_abbrev(p->two->sha1, abbrev));
}
- printf("%s%c%s", status, inter_name_termination, path_one);
+ printf("%s%c%s", status, inter_name_termination,
+ two_paths || p->one->mode ? path_one : path_two);
if (two_paths)
printf("%c%s", inter_name_termination, path_two);
putchar(line_termination);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/Documentation/config.txt new/git-1.5.2.4/Documentation/config.txt
--- old/git-1.5.2.3/Documentation/config.txt 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/Documentation/config.txt 2007-07-12 22:34:23.000000000 +0200
@@ -263,7 +263,7 @@
+
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
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/Documentation/git-fast-import.txt new/git-1.5.2.4/Documentation/git-fast-import.txt
--- old/git-1.5.2.3/Documentation/git-fast-import.txt 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/Documentation/git-fast-import.txt 2007-07-12 22:34:23.000000000 +0200
@@ -481,8 +481,9 @@
`filedelete`
^^^^^^^^^^^^
-Included in a `commit` command to remove a file from the branch.
-If the file removal makes its directory empty, the directory will
+Included in a `commit` command to remove a file or recursively
+delete an entire directory from the branch. If the file or directory
+removal makes its parent directory empty, the parent directory will
be automatically removed too. This cascades up the tree until the
first non-empty directory or the root is reached.
@@ -490,7 +491,8 @@
'D' SP <path> LF
....
-here `<path>` is the complete path of the file to be removed.
+here `<path>` is the complete path of the file or subdirectory to
+be removed from the branch.
See `filemodify` above for a detailed description of `<path>`.
`filedeleteall`
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/Documentation/git-format-patch.txt new/git-1.5.2.4/Documentation/git-format-patch.txt
--- old/git-1.5.2.3/Documentation/git-format-patch.txt 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/Documentation/git-format-patch.txt 2007-07-12 22:34:23.000000000 +0200
@@ -50,6 +50,9 @@
-------
include::diff-options.txt[]
+-<n>::
+ Limits the number of patches to prepare.
+
-o|--output-directory <dir>::
Use <dir> to store the resulting files, instead of the
current working directory.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/Documentation/glossary.txt new/git-1.5.2.4/Documentation/glossary.txt
--- old/git-1.5.2.3/Documentation/glossary.txt 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/Documentation/glossary.txt 2007-07-12 22:34:23.000000000 +0200
@@ -330,6 +330,12 @@
denotes a particular <>. These may be stored in
`$GIT_DIR/refs/`.
+[[def_reflog]]reflog::
+ A reflog shows the local "history" of a ref. In other words,
+ it can tell you what the 3rd last revision in _this_ repository
+ was, and what was the current state in _this_ repository,
+ yesterday 9:14pm. See gitlink:git-reflog[1] for details.
+
[[def_refspec]]refspec::
A "refspec" is used by <> and
<> to describe the mapping between remote
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/Documentation/RelNotes-1.5.2.4.txt new/git-1.5.2.4/Documentation/RelNotes-1.5.2.4.txt
--- old/git-1.5.2.3/Documentation/RelNotes-1.5.2.4.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/git-1.5.2.4/Documentation/RelNotes-1.5.2.4.txt 2007-07-12 22:34:23.000000000 +0200
@@ -0,0 +1,28 @@
+GIT v1.5.2.4 Release Notes
+==========================
+
+Fixes since v1.5.2.3
+--------------------
+
+ * Bugfixes
+
+ - "git-gui" bugfixes, including a handful fixes to run it
+ better on Cygwin/MSYS.
+
+ - "git checkout" failed to switch back and forth between
+ branches, one of which has "frotz -> xyzzy" symlink and
+ file "xyzzy/filfre", while the other one has a file
+ "frotz/filfre".
+
+ - "git prune" used to segfault upon seeing a commit that is
+ referred to by a tree object (aka "subproject").
+
+ - "git diff --name-status --no-index" mishandled an added file.
+
+ - "git apply --reverse --whitespace=warn" still complained
+ about whitespaces that a forward application would have
+ introduced.
+
+ * Documentation Fixes and Updates
+
+ - A handful documentation updates.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/Documentation/tutorial.txt new/git-1.5.2.4/Documentation/tutorial.txt
--- old/git-1.5.2.3/Documentation/tutorial.txt 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/Documentation/tutorial.txt 2007-07-12 22:34:23.000000000 +0200
@@ -304,7 +304,7 @@
$ git remote add bob /home/bob/myrepo
------------------------------------------------
-With this, you can perform the first operation alone using the
+With this, Alice can perform the first operation alone using the
"git fetch" command without merging them with her own branch,
using:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/Documentation/user-manual.txt new/git-1.5.2.4/Documentation/user-manual.txt
--- old/git-1.5.2.3/Documentation/user-manual.txt 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/Documentation/user-manual.txt 2007-07-12 22:34:23.000000000 +0200
@@ -890,7 +890,7 @@
-------------------------------------------------
will use HEAD to produce a tar archive in which each filename is
-preceded by "prefix/".
+preceded by "project/".
If you're releasing a new version of a software project, you may want
to simultaneously make a changelog to include in the release
@@ -1528,9 +1528,9 @@
-------------------------------------------------
Dangling objects are not a problem. At worst they may take up a little
-extra disk space. They can sometimes provide a last-resort method of
-recovery lost work--see <<dangling-objects>> for details. However, if
-you want, you may remove them with gitlink:git-prune[1] or the --prune
+extra disk space. They can sometimes provide a last-resort method for
+recovering lost work--see <<dangling-objects>> for details. However, if
+you wish, you can remove them with gitlink:git-prune[1] or the --prune
option to gitlink:git-gc[1]:
-------------------------------------------------
@@ -1772,7 +1772,7 @@
If you and the maintainer both have accounts on the same machine, then
you can just pull changes from each other's repositories directly;
-commands that accepts repository URLs as arguments will also accept a
+commands that accept repository URLs as arguments will also accept a
local directory name:
-------------------------------------------------
@@ -1780,6 +1780,15 @@
$ git pull /path/to/other/repository
-------------------------------------------------
+or an ssh url:
+
+-------------------------------------------------
+$ git clone ssh://yourhost/~you/repository
+-------------------------------------------------
+
+For projects with few developers, or for synchronizing a few private
+repositories, this may be all you need.
+
However, the more common way to do this is to maintain a separate public
repository (usually on a different host) for others to pull changes
from. This is usually more convenient, and allows you to cleanly
@@ -1802,6 +1811,8 @@
| they push V
their public repo <------------------- their repo
+We explain how to do this in the following sections.
+
[[setting-up-a-public-repository]]
Setting up a public repository
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1913,6 +1924,12 @@
$ git push ssh://yourserver.com/~you/proj.git +master
-------------------------------------------------
+Note that the target of a "push" is normally a
+<> repository. You can also push to a
+repository that has a checked-out working tree, but the working tree
+will not be updated by the push. This may lead to unexpected results if
+the branch you push to is the currently checked-out branch!
+
As with git-fetch, you may also set up configuration options to
save typing; so, for example, after
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/git-gui/git-gui.sh new/git-1.5.2.4/git-gui/git-gui.sh
--- old/git-1.5.2.3/git-gui/git-gui.sh 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/git-gui/git-gui.sh 2007-07-12 22:34:23.000000000 +0200
@@ -1042,15 +1042,17 @@
# lets us bypass using shell process on Windows systems.
#
set cmd [list [info nameofexecutable]]
- lappend cmd [gitexec gitk]
+ set exe [gitexec gitk]
+ lappend cmd $exe
if {$revs ne {}} {
append cmd { }
append cmd $revs
}
- if {[catch {eval exec $cmd &} err]} {
- error_popup "Failed to start gitk:\n\n$err"
+ if {! [file exists $exe]} {
+ error_popup "Unable to start gitk:\n\n$exe does not exist"
} else {
+ eval exec $cmd &
set ui_status_value $starting_gitk_msg
after 10000 {
if {$ui_status_value eq $starting_gitk_msg} {
@@ -1523,7 +1525,8 @@
menu .mbar.push
.mbar.push add command -label {Push...} \
- -command do_push_anywhere
+ -command do_push_anywhere \
+ -accelerator $M1T-P
}
if {[is_MacOSX]} {
@@ -1819,6 +1822,10 @@
lappend disable_on_lock \
{.vpane.lower.commarea.buttons.commit conf -state}
+button .vpane.lower.commarea.buttons.push -text {Push} \
+ -command do_push_anywhere
+pack .vpane.lower.commarea.buttons.push -side top -fill x
+
# -- Commit Message Buffer
#
frame .vpane.lower.commarea.buffer
@@ -2146,10 +2153,14 @@
bind . <$M1B-Key-n> do_create_branch
bind . <$M1B-Key-N> do_create_branch
}
+if {[is_enabled transport]} {
+ bind . <$M1B-Key-p> do_push_anywhere
+ bind . <$M1B-Key-P> do_push_anywhere
+}
-bind all <Key-F5> do_rescan
-bind all <$M1B-Key-r> do_rescan
-bind all <$M1B-Key-R> do_rescan
+bind . <Key-F5> do_rescan
+bind . <$M1B-Key-r> do_rescan
+bind . <$M1B-Key-R> do_rescan
bind . <$M1B-Key-s> do_signoff
bind . <$M1B-Key-S> do_signoff
bind . <$M1B-Key-i> do_add_all
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/git-gui/lib/blame.tcl new/git-1.5.2.4/git-gui/lib/blame.tcl
--- old/git-1.5.2.3/git-gui/lib/blame.tcl 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/git-gui/lib/blame.tcl 2007-07-12 22:34:23.000000000 +0200
@@ -547,6 +547,10 @@
set a_name {}
catch {set a_name $header($cmit,author)}
while {$a_name ne {}} {
+ if {$author_abbr ne {}
+ && [string index $a_name 0] eq {'}} {
+ regsub {^'[^']+'\s+} $a_name {} a_name
+ }
if {![regexp {^([[:upper:]])} $a_name _a]} break
append author_abbr $_a
unset _a
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/git-gui/lib/browser.tcl new/git-1.5.2.4/git-gui/lib/browser.tcl
--- old/git-1.5.2.3/git-gui/lib/browser.tcl 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/git-gui/lib/browser.tcl 2007-07-12 22:34:23.000000000 +0200
@@ -11,6 +11,8 @@
field browser_stack {}
field browser_busy 1
+field ls_buf {}; # Buffered record output from ls-tree
+
constructor new {commit} {
global cursor_ptr M1B
make_toplevel top w
@@ -160,7 +162,7 @@
}
method _ls {tree_id {name {}}} {
- set browser_buffer {}
+ set ls_buf {}
set browser_files {}
set browser_busy 1
@@ -185,17 +187,19 @@
}
method _read {fd} {
- append browser_buffer [read $fd]
- set pck [split $browser_buffer "\0"]
- set browser_buffer [lindex $pck end]
+ append ls_buf [read $fd]
+ set pck [split $ls_buf "\0"]
+ set ls_buf [lindex $pck end]
set n [llength $browser_files]
$w conf -state normal
foreach p [lrange $pck 0 end-1] {
- set info [split $p "\t"]
- set path [lindex $info 1]
- set info [split [lindex $info 0] { }]
- set type [lindex $info 1]
+ set tab [string first "\t" $p]
+ if {$tab == -1} continue
+
+ set info [split [string range $p 0 [expr {$tab - 1}]] { }]
+ set path [string range $p [expr {$tab + 1}] end]
+ set type [lindex $info 1]
set object [lindex $info 2]
switch -- $type {
@@ -225,7 +229,7 @@
close $fd
set browser_status Ready.
set browser_busy 0
- unset browser_buffer
+ set ls_buf {}
if {$n > 0} {
$w tag add in_sel 1.0 2.0
focus -force $w
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/git-gui/lib/commit.tcl new/git-1.5.2.4/git-gui/lib/commit.tcl
--- old/git-1.5.2.3/git-gui/lib/commit.tcl 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/git-gui/lib/commit.tcl 2007-07-12 22:34:23.000000000 +0200
@@ -260,7 +260,18 @@
# -- Verify this wasn't an empty change.
#
if {$commit_type eq {normal}} {
- set old_tree [git rev-parse "$PARENT^{tree}"]
+ set fd_ot [open "| git cat-file commit $PARENT" r]
+ fconfigure $fd_ot -encoding binary -translation lf
+ set old_tree [gets $fd_ot]
+ close $fd_ot
+
+ if {[string equal -length 5 {tree } $old_tree]
+ && [string length $old_tree] == 45} {
+ set old_tree [string range $old_tree 5 end]
+ } else {
+ error "Commit $PARENT appears to be corrupt"
+ }
+
if {$tree_id eq $old_tree} {
info_popup {No changes to commit.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/git-gui/lib/console.tcl new/git-1.5.2.4/git-gui/lib/console.tcl
--- old/git-1.5.2.3/git-gui/lib/console.tcl 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/git-gui/lib/console.tcl 2007-07-12 22:34:23.000000000 +0200
@@ -31,16 +31,20 @@
-background white -borderwidth 1 \
-relief sunken \
-width 80 -height 10 \
+ -wrap none \
-font font_diff \
-state disabled \
+ -xscrollcommand [list $w.m.sbx set] \
-yscrollcommand [list $w.m.sby set]
label $w.m.s -text {Working... please wait...} \
-anchor w \
-justify left \
-font font_uibold
+ scrollbar $w.m.sbx -command [list $w.m.t xview] -orient h
scrollbar $w.m.sby -command [list $w.m.t yview]
pack $w.m.l1 -side top -fill x
pack $w.m.s -side bottom -fill x
+ pack $w.m.sbx -side bottom -fill x
pack $w.m.sby -side right -fill y
pack $w.m.t -side left -fill both -expand 1
pack $w.m -side top -fill both -expand 1 -padx 5 -pady 10
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/git-gui/lib/merge.tcl new/git-1.5.2.4/git-gui/lib/merge.tcl
--- old/git-1.5.2.3/git-gui/lib/merge.tcl 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/git-gui/lib/merge.tcl 2007-07-12 22:34:23.000000000 +0200
@@ -213,7 +213,9 @@
pack $w.buttons.visualize -side left
button $w.buttons.create -text Merge -command $_start
pack $w.buttons.create -side right
- button $w.buttons.cancel -text {Cancel} -command [list destroy $w]
+ button $w.buttons.cancel \
+ -text {Cancel} \
+ -command "unlock_index;destroy $w"
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/git-gui/lib/shortcut.tcl new/git-1.5.2.4/git-gui/lib/shortcut.tcl
--- old/git-1.5.2.3/git-gui/lib/shortcut.tcl 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/git-gui/lib/shortcut.tcl 2007-07-12 22:34:23.000000000 +0200
@@ -9,6 +9,9 @@
-title "[appname] ([reponame]): Create Desktop Icon" \
-initialfile "Git [reponame].bat"]
if {$fn != {}} {
+ if {[file extension $fn] ne {.bat}} {
+ set fn ${fn}.bat
+ }
if {[catch {
set fd [open $fn w]
puts $fd "@ECHO Entering [reponame]"
@@ -42,6 +45,9 @@
-initialdir $desktop \
-initialfile "Git [reponame].bat"]
if {$fn != {}} {
+ if {[file extension $fn] ne {.bat}} {
+ set fn ${fn}.bat
+ }
if {[catch {
set fd [open $fn w]
set sh [exec cygpath \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/git-gui/version new/git-1.5.2.4/git-gui/version
--- old/git-1.5.2.3/git-gui/version 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/git-gui/version 2007-07-12 22:34:24.000000000 +0200
@@ -1 +1 @@
-0.7.4
+0.7.5
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/git.spec new/git-1.5.2.4/git.spec
--- old/git-1.5.2.3/git.spec 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/git.spec 2007-07-12 22:34:23.000000000 +0200
@@ -3,7 +3,7 @@
%define python_path /usr/bin/python
Name: git
-Version: 1.5.2.3
+Version: 1.5.2.4
Release: 1%{?dist}
Summary: Git core and tools
License: GPL
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/GIT-VERSION-GEN new/git-1.5.2.4/GIT-VERSION-GEN
--- old/git-1.5.2.3/GIT-VERSION-GEN 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/GIT-VERSION-GEN 2007-07-12 22:34:23.000000000 +0200
@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
-DEF_VER=v1.5.2.3.GIT
+DEF_VER=v1.5.2.4.GIT
LF='
'
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/reachable.c new/git-1.5.2.4/reachable.c
--- old/git-1.5.2.3/reachable.c 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/reachable.c 2007-07-12 22:34:23.000000000 +0200
@@ -21,6 +21,14 @@
/* 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 @@
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 @@
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
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/RelNotes new/git-1.5.2.4/RelNotes
--- old/git-1.5.2.3/RelNotes 2007-08-06 23:07:18.000000000 +0200
+++ new/git-1.5.2.4/RelNotes 2007-08-06 23:07:18.000000000 +0200
@@ -1 +1 @@
-symbolic link to Documentation/RelNotes-1.5.2.3.txt
+symbolic link to Documentation/RelNotes-1.5.2.4.txt
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/sha1_file.c new/git-1.5.2.4/sha1_file.c
--- old/git-1.5.2.3/sha1_file.c 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/sha1_file.c 2007-07-12 22:34:23.000000000 +0200
@@ -352,10 +352,14 @@
char *map;
size_t mapsz;
struct stat st;
- char path[PATH_MAX];
+ const char alt_file_name[] = "info/alternates";
+ /* Given that relative_base is no longer than PATH_MAX,
+ ensure that "path" has enough space to append "/", the
+ file name, "info/alternates", and a trailing NUL. */
+ char path[PATH_MAX + 1 + sizeof alt_file_name];
int fd;
- sprintf(path, "%s/info/alternates", relative_base);
+ sprintf(path, "%s/%s", relative_base, alt_file_name);
fd = open(path, O_RDONLY);
if (fd < 0)
return;
@@ -814,7 +818,10 @@
static void prepare_packed_git_one(char *objdir, int local)
{
- char path[PATH_MAX];
+ /* Ensure that this buffer is large enough so that we can
+ append "/pack/" without clobbering the stack even if
+ strlen(objdir) were PATH_MAX. */
+ char path[PATH_MAX + 1 + 4 + 1 + 1];
int len;
DIR *dir;
struct dirent *de;
@@ -836,6 +843,9 @@
if (!has_extension(de->d_name, ".idx"))
continue;
+ if (len + namelen + 1 > sizeof(path))
+ continue;
+
/* Don't reopen a pack we already have. */
strcpy(path + len, de->d_name);
for (p = packed_git; p; p = p->next) {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/t/t2007-checkout-symlink.sh new/git-1.5.2.4/t/t2007-checkout-symlink.sh
--- old/git-1.5.2.3/t/t2007-checkout-symlink.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/git-1.5.2.4/t/t2007-checkout-symlink.sh 2007-07-12 22:34:23.000000000 +0200
@@ -0,0 +1,50 @@
+#!/bin/sh
+#
+# Copyright (c) 2007 Junio C Hamano
+
+test_description='git checkout to switch between branches with symlink<->dir'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+
+ mkdir frotz &&
+ echo hello >frotz/filfre &&
+ git add frotz/filfre &&
+ test_tick &&
+ git commit -m "master has file frotz/filfre" &&
+
+ git branch side &&
+
+ echo goodbye >nitfol &&
+ git add nitfol
+ test_tick &&
+ git commit -m "master adds file nitfol" &&
+
+ git checkout side &&
+
+ git rm --cached frotz/filfre &&
+ mv frotz xyzzy &&
+ ln -s xyzzy frotz &&
+ git add xyzzy/filfre frotz &&
+ test_tick &&
+ git commit -m "side moves frotz/ to xyzzy/ and adds frotz->xyzzy/"
+
+'
+
+test_expect_success 'switch from symlink to dir' '
+
+ git checkout master
+
+'
+
+rm -fr frotz xyzzy nitfol &&
+git checkout -f master || exit
+
+test_expect_success 'switch from dir to symlink' '
+
+ git checkout side
+
+'
+
+test_done
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/t/t4013/diff.diff_--name-status_dir2_dir new/git-1.5.2.4/t/t4013/diff.diff_--name-status_dir2_dir
--- old/git-1.5.2.3/t/t4013/diff.diff_--name-status_dir2_dir 1970-01-01 01:00:00.000000000 +0100
+++ new/git-1.5.2.4/t/t4013/diff.diff_--name-status_dir2_dir 2007-07-12 22:34:23.000000000 +0200
@@ -0,0 +1,3 @@
+$ git diff --name-status dir2 dir
+A dir/sub
+$
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/t/t4013-diff-various.sh new/git-1.5.2.4/t/t4013-diff-various.sh
--- old/git-1.5.2.3/t/t4013-diff-various.sh 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/t/t4013-diff-various.sh 2007-07-12 22:34:23.000000000 +0200
@@ -17,6 +17,7 @@
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
mkdir dir &&
+ mkdir dir2 &&
for i in 1 2 3; do echo $i; done >file0 &&
for i in A B; do echo $i; done >dir/sub &&
cat file0 >file2 &&
@@ -252,6 +253,7 @@
diff --patch-with-raw initial..side
diff --patch-with-stat -r initial..side
diff --patch-with-raw -r initial..side
+diff --name-status dir2 dir
EOF
test_done
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/t/t4116-apply-reverse.sh new/git-1.5.2.4/t/t4116-apply-reverse.sh
--- old/git-1.5.2.3/t/t4116-apply-reverse.sh 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/t/t4116-apply-reverse.sh 2007-07-12 22:34:23.000000000 +0200
@@ -82,4 +82,10 @@
)
'
+test_expect_success 'reversing a whitespace introduction' '
+ sed "s/a/a /" < file1 > file1.new &&
+ mv file1.new file1 &&
+ git diff | git apply --reverse --whitespace=error
+'
+
test_done
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/unpack-trees.c new/git-1.5.2.4/unpack-trees.c
--- old/git-1.5.2.3/unpack-trees.c 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/unpack-trees.c 2007-07-12 22:34:23.000000000 +0200
@@ -495,6 +495,9 @@
if (o->index_only || o->reset || !o->update)
return;
+ if (has_symlink_leading_path(path, NULL))
+ return;
+
if (!lstat(path, &st)) {
int cnt;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/git-1.5.2.3/version new/git-1.5.2.4/version
--- old/git-1.5.2.3/version 2007-07-02 10:11:39.000000000 +0200
+++ new/git-1.5.2.4/version 2007-07-12 22:34:23.000000000 +0200
@@ -1 +1 @@
-1.5.2.3
+1.5.2.4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org