Merge changes in the master branch into 0.99.5 preparation branch.
This commit is contained in:
commit
8eb14dc188
3
Makefile
3
Makefile
@ -244,7 +244,8 @@ deb: dist
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o mozilla-sha1/*.o ppc/*.o $(PROG) $(LIB_FILE)
|
rm -f *.o mozilla-sha1/*.o ppc/*.o $(PROG) $(LIB_FILE)
|
||||||
rm -f $(GIT_TARNAME).tar.gz git-core.spec git-core_$(GIT_VERSION)-*.deb
|
rm -f $(GIT_TARNAME).tar.gz git-core.spec
|
||||||
|
rm -f git-core_$(GIT_VERSION)-*.deb git-tk_$(GIT_VERSION)-*.deb
|
||||||
rm -rf $(GIT_TARNAME)
|
rm -rf $(GIT_TARNAME)
|
||||||
$(MAKE) -C tools/ clean
|
$(MAKE) -C tools/ clean
|
||||||
$(MAKE) -C Documentation/ clean
|
$(MAKE) -C Documentation/ clean
|
||||||
|
8
debian/changelog
vendored
8
debian/changelog
vendored
@ -4,6 +4,14 @@ git-core (0.99.5-0) unstable; urgency=low
|
|||||||
|
|
||||||
-- Junio C Hamano <junkio@cox.net> Wed, 10 Aug 2005 22:05:00 -0700
|
-- Junio C Hamano <junkio@cox.net> Wed, 10 Aug 2005 22:05:00 -0700
|
||||||
|
|
||||||
|
git-core (0.99.4-3) unstable; urgency=low
|
||||||
|
|
||||||
|
* Split off gitk.
|
||||||
|
* Do not depend on diff which is an essential package.
|
||||||
|
* Use dh_movefiles, not dh_install, to stage two subpackages.
|
||||||
|
|
||||||
|
-- Matthias Urlichs <smurf@debian.org> Thu, 11 Aug 2005 01:43:24 +0200
|
||||||
|
|
||||||
git-core (0.99.4-2) unstable; urgency=low
|
git-core (0.99.4-2) unstable; urgency=low
|
||||||
|
|
||||||
* Git 0.99.4 official release.
|
* Git 0.99.4 official release.
|
||||||
|
10
debian/control
vendored
10
debian/control
vendored
@ -7,7 +7,7 @@ Standards-Version: 3.6.1
|
|||||||
|
|
||||||
Package: git-core
|
Package: git-core
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, patch, diff, rcs
|
Depends: ${shlibs:Depends}, ${misc:Depends}, patch, rcs
|
||||||
Recommends: rsync, curl, ssh, libmail-sendmail-perl, libemail-valid-perl
|
Recommends: rsync, curl, ssh, libmail-sendmail-perl, libemail-valid-perl
|
||||||
Conflicts: git
|
Conflicts: git
|
||||||
Description: The git content addressable filesystem
|
Description: The git content addressable filesystem
|
||||||
@ -15,5 +15,11 @@ Description: The git content addressable filesystem
|
|||||||
and flexible filesystem-based database designed to store directory trees
|
and flexible filesystem-based database designed to store directory trees
|
||||||
with regard to their history. The top layer is a SCM-like tool which
|
with regard to their history. The top layer is a SCM-like tool which
|
||||||
enables human beings to work with the database in a manner to a degree
|
enables human beings to work with the database in a manner to a degree
|
||||||
similar to other SCM tools (like CVS, BitKeeper or Monotone).
|
similar to other SCM tools.
|
||||||
|
|
||||||
|
Package: git-tk
|
||||||
|
Architecture: any
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}, git-core, tk8.4
|
||||||
|
Description: The git content addressable filesystem, GUI add-on
|
||||||
|
This package contains 'gitk', the git revision tree visualizer.
|
||||||
|
|
||||||
|
25
debian/copyright
vendored
25
debian/copyright
vendored
@ -1,3 +1,24 @@
|
|||||||
License:
|
This package was downloaded from ftp.kernel.org:/pub/software/scm/git/.
|
||||||
|
|
||||||
GPL v2 (see COPYING for details)
|
Upstream Author: Linus Torvalds and many others
|
||||||
|
|
||||||
|
Copyright:
|
||||||
|
|
||||||
|
Copyright 2005, Linus Torvalds and others.
|
||||||
|
|
||||||
|
This package is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; version 2 dated June, 1991.
|
||||||
|
|
||||||
|
This package is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this package; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
02111-1307, USA.
|
||||||
|
|
||||||
|
On Debian GNU/Linux systems, the complete text of the GNU General
|
||||||
|
Public License can be found in `/usr/share/common-licenses/GPL'.
|
||||||
|
2
debian/docs
vendored
2
debian/docs
vendored
@ -1,3 +1 @@
|
|||||||
README
|
README
|
||||||
COPYING
|
|
||||||
|
|
||||||
|
1
debian/git-core.files
vendored
Normal file
1
debian/git-core.files
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/usr
|
1
debian/git-core.install
vendored
1
debian/git-core.install
vendored
@ -1 +0,0 @@
|
|||||||
*
|
|
1
debian/git-tk.files
vendored
Normal file
1
debian/git-tk.files
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/usr/bin/gitk
|
4
debian/rules
vendored
4
debian/rules
vendored
@ -61,7 +61,9 @@ install: build
|
|||||||
mkdir -p $(DOC_DESTDIR)
|
mkdir -p $(DOC_DESTDIR)
|
||||||
find $(DOC) '(' -name '*.txt' -o -name '*.html' ')' -exec install {} $(DOC_DESTDIR) ';'
|
find $(DOC) '(' -name '*.txt' -o -name '*.html' ')' -exec install {} $(DOC_DESTDIR) ';'
|
||||||
|
|
||||||
dh_install --list-missing --sourcedir=$(DESTDIR)
|
dh_movefiles -p git-tk
|
||||||
|
dh_movefiles -p git-core
|
||||||
|
find debian/tmp -type d -o -print | sed -e 's/^/? /'
|
||||||
|
|
||||||
binary: build install
|
binary: build install
|
||||||
dh_testdir
|
dh_testdir
|
||||||
|
47
gitk
47
gitk
@ -31,7 +31,7 @@ proc getcommits {rargs} {
|
|||||||
set phase getcommits
|
set phase getcommits
|
||||||
set startmsecs [clock clicks -milliseconds]
|
set startmsecs [clock clicks -milliseconds]
|
||||||
set nextupdate [expr $startmsecs + 100]
|
set nextupdate [expr $startmsecs + 100]
|
||||||
set ncmupdate 0
|
set ncmupdate 1
|
||||||
if [catch {
|
if [catch {
|
||||||
set parse_args [concat --default HEAD $rargs]
|
set parse_args [concat --default HEAD $rargs]
|
||||||
set parsed_args [split [eval exec git-rev-parse $parse_args] "\n"]
|
set parsed_args [split [eval exec git-rev-parse $parse_args] "\n"]
|
||||||
@ -62,7 +62,6 @@ proc getcommitlines {commfd} {
|
|||||||
global commits parents cdate children nchildren
|
global commits parents cdate children nchildren
|
||||||
global commitlisted phase commitinfo nextupdate
|
global commitlisted phase commitinfo nextupdate
|
||||||
global stopped redisplaying leftover
|
global stopped redisplaying leftover
|
||||||
global numcommits ncmupdate
|
|
||||||
|
|
||||||
set stuff [read $commfd]
|
set stuff [read $commfd]
|
||||||
if {$stuff == {}} {
|
if {$stuff == {}} {
|
||||||
@ -110,10 +109,8 @@ to allow selection of commits to be displayed.)}
|
|||||||
set commitlisted($id) 1
|
set commitlisted($id) 1
|
||||||
parsecommit $id $cmit 1
|
parsecommit $id $cmit 1
|
||||||
drawcommit $id
|
drawcommit $id
|
||||||
if {[clock clicks -milliseconds] >= $nextupdate
|
if {[clock clicks -milliseconds] >= $nextupdate} {
|
||||||
&& $numcommits >= $ncmupdate + 100} {
|
doupdate 1
|
||||||
doupdate
|
|
||||||
set ncmupdate $numcommits
|
|
||||||
}
|
}
|
||||||
while {$redisplaying} {
|
while {$redisplaying} {
|
||||||
set redisplaying 0
|
set redisplaying 0
|
||||||
@ -123,10 +120,8 @@ to allow selection of commits to be displayed.)}
|
|||||||
foreach id $commits {
|
foreach id $commits {
|
||||||
drawcommit $id
|
drawcommit $id
|
||||||
if {$stopped} break
|
if {$stopped} break
|
||||||
if {[clock clicks -milliseconds] >= $nextupdate
|
if {[clock clicks -milliseconds] >= $nextupdate} {
|
||||||
&& $numcommits >= $ncmupdate + 100} {
|
doupdate 1
|
||||||
doupdate
|
|
||||||
set ncmupdate $numcommits
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -134,13 +129,24 @@ to allow selection of commits to be displayed.)}
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc doupdate {} {
|
proc doupdate {reading} {
|
||||||
global commfd nextupdate
|
global commfd nextupdate numcommits ncmupdate
|
||||||
|
|
||||||
incr nextupdate 100
|
if {$reading} {
|
||||||
fileevent $commfd readable {}
|
fileevent $commfd readable {}
|
||||||
|
}
|
||||||
update
|
update
|
||||||
fileevent $commfd readable [list getcommitlines $commfd]
|
set nextupdate [expr {[clock clicks -milliseconds] + 100}]
|
||||||
|
if {$numcommits < 100} {
|
||||||
|
set ncmupdate [expr {$numcommits + 1}]
|
||||||
|
} elseif {$numcommits < 10000} {
|
||||||
|
set ncmupdate [expr {$numcommits + 10}]
|
||||||
|
} else {
|
||||||
|
set ncmupdate [expr {$numcommits + 100}]
|
||||||
|
}
|
||||||
|
if {$reading} {
|
||||||
|
fileevent $commfd readable [list getcommitlines $commfd]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc readcommit {id} {
|
proc readcommit {id} {
|
||||||
@ -1127,8 +1133,7 @@ proc drawcommit {id} {
|
|||||||
}
|
}
|
||||||
if {[clock clicks -milliseconds] >= $nextupdate
|
if {[clock clicks -milliseconds] >= $nextupdate
|
||||||
&& $numcommits >= $ncmupdate} {
|
&& $numcommits >= $ncmupdate} {
|
||||||
doupdate
|
doupdate 1
|
||||||
set ncmupdate $numcommits
|
|
||||||
if {$stopped} break
|
if {$stopped} break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1171,7 +1176,7 @@ proc drawgraph {} {
|
|||||||
if {$startcommits == {}} return
|
if {$startcommits == {}} return
|
||||||
set startmsecs [clock clicks -milliseconds]
|
set startmsecs [clock clicks -milliseconds]
|
||||||
set nextupdate [expr $startmsecs + 100]
|
set nextupdate [expr $startmsecs + 100]
|
||||||
set ncmupdate 0
|
set ncmupdate 1
|
||||||
initgraph
|
initgraph
|
||||||
set todo [lindex $startcommits 0]
|
set todo [lindex $startcommits 0]
|
||||||
drawrest 0 1
|
drawrest 0 1
|
||||||
@ -1210,10 +1215,8 @@ proc drawrest {level startix} {
|
|||||||
drawslants $level
|
drawslants $level
|
||||||
}
|
}
|
||||||
if {[clock clicks -milliseconds] >= $nextupdate
|
if {[clock clicks -milliseconds] >= $nextupdate
|
||||||
&& $numcommits >= $ncmupdate + 100} {
|
&& $numcommits >= $ncmupdate} {
|
||||||
update
|
doupdate 0
|
||||||
incr nextupdate 100
|
|
||||||
set ncmupdate $numcommits
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
97
merge-base.c
97
merge-base.c
@ -2,6 +2,86 @@
|
|||||||
#include "cache.h"
|
#include "cache.h"
|
||||||
#include "commit.h"
|
#include "commit.h"
|
||||||
|
|
||||||
|
#define PARENT1 1
|
||||||
|
#define PARENT2 2
|
||||||
|
#define UNINTERESTING 4
|
||||||
|
|
||||||
|
static struct commit *interesting(struct commit_list *list)
|
||||||
|
{
|
||||||
|
while (list) {
|
||||||
|
struct commit *commit = list->item;
|
||||||
|
list = list->next;
|
||||||
|
if (commit->object.flags & UNINTERESTING)
|
||||||
|
continue;
|
||||||
|
return commit;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A pathological example of how this thing works.
|
||||||
|
*
|
||||||
|
* Suppose we had this commit graph, where chronologically
|
||||||
|
* the timestamp on the commit are A <= B <= C <= D <= E <= F
|
||||||
|
* and we are trying to figure out the merge base for E and F
|
||||||
|
* commits.
|
||||||
|
*
|
||||||
|
* F
|
||||||
|
* / \
|
||||||
|
* E A D
|
||||||
|
* \ / /
|
||||||
|
* B /
|
||||||
|
* \ /
|
||||||
|
* C
|
||||||
|
*
|
||||||
|
* First we push E and F to list to be processed. E gets bit 1
|
||||||
|
* and F gets bit 2. The list becomes:
|
||||||
|
*
|
||||||
|
* list=F(2) E(1), result=empty
|
||||||
|
*
|
||||||
|
* Then we pop F, the newest commit, from the list. Its flag is 2.
|
||||||
|
* We scan its parents, mark them reachable from the side that F is
|
||||||
|
* reachable from, and push them to the list:
|
||||||
|
*
|
||||||
|
* list=E(1) D(2) A(2), result=empty
|
||||||
|
*
|
||||||
|
* Next pop E and do the same.
|
||||||
|
*
|
||||||
|
* list=D(2) B(1) A(2), result=empty
|
||||||
|
*
|
||||||
|
* Next pop D and do the same.
|
||||||
|
*
|
||||||
|
* list=C(2) B(1) A(2), result=empty
|
||||||
|
*
|
||||||
|
* Next pop C and do the same.
|
||||||
|
*
|
||||||
|
* list=B(1) A(2), result=empty
|
||||||
|
*
|
||||||
|
* Now it is B's turn. We mark its parent, C, reachable from B's side,
|
||||||
|
* and push it to the list:
|
||||||
|
*
|
||||||
|
* list=C(3) A(2), result=empty
|
||||||
|
*
|
||||||
|
* Now pop C and notice it has flags==3. It is placed on the result list,
|
||||||
|
* and the list now contains:
|
||||||
|
*
|
||||||
|
* list=A(2), result=C(3)
|
||||||
|
*
|
||||||
|
* We pop A and do the same.
|
||||||
|
*
|
||||||
|
* list=B(3), result=C(3)
|
||||||
|
*
|
||||||
|
* Next, we pop B and something very interesting happens. It has flags==3
|
||||||
|
* so it is also placed on the result list, and its parents are marked
|
||||||
|
* uninteresting, retroactively, and placed back on the list:
|
||||||
|
*
|
||||||
|
* list=C(7), result=C(7) B(3)
|
||||||
|
*
|
||||||
|
* Now, list does not have any interesting commit. So we find the newest
|
||||||
|
* commit from the result list that is not marked uninteresting. Which is
|
||||||
|
* commit B.
|
||||||
|
*/
|
||||||
|
|
||||||
static struct commit *common_ancestor(struct commit *rev1, struct commit *rev2)
|
static struct commit *common_ancestor(struct commit *rev1, struct commit *rev2)
|
||||||
{
|
{
|
||||||
struct commit_list *list = NULL;
|
struct commit_list *list = NULL;
|
||||||
@ -18,19 +98,18 @@ static struct commit *common_ancestor(struct commit *rev1, struct commit *rev2)
|
|||||||
insert_by_date(rev1, &list);
|
insert_by_date(rev1, &list);
|
||||||
insert_by_date(rev2, &list);
|
insert_by_date(rev2, &list);
|
||||||
|
|
||||||
while (list) {
|
while (interesting(list)) {
|
||||||
struct commit *commit = list->item;
|
struct commit *commit = list->item;
|
||||||
struct commit_list *tmp = list, *parents;
|
struct commit_list *tmp = list, *parents;
|
||||||
int flags = commit->object.flags & 3;
|
int flags = commit->object.flags & 7;
|
||||||
|
|
||||||
list = list->next;
|
list = list->next;
|
||||||
free(tmp);
|
free(tmp);
|
||||||
switch (flags) {
|
if (flags == 3) {
|
||||||
case 3:
|
|
||||||
insert_by_date(commit, &result);
|
insert_by_date(commit, &result);
|
||||||
continue;
|
|
||||||
case 0:
|
/* Mark children of a found merge uninteresting */
|
||||||
die("git-merge-base: commit without either parent?");
|
flags |= UNINTERESTING;
|
||||||
}
|
}
|
||||||
parents = commit->parents;
|
parents = commit->parents;
|
||||||
while (parents) {
|
while (parents) {
|
||||||
@ -43,9 +122,7 @@ static struct commit *common_ancestor(struct commit *rev1, struct commit *rev2)
|
|||||||
insert_by_date(p, &list);
|
insert_by_date(p, &list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!result)
|
return interesting(result);
|
||||||
return NULL;
|
|
||||||
return result->item;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
|
58
pull.c
58
pull.c
@ -98,12 +98,39 @@ static int process_tag(struct tag *tag)
|
|||||||
static struct object_list *process_queue = NULL;
|
static struct object_list *process_queue = NULL;
|
||||||
static struct object_list **process_queue_end = &process_queue;
|
static struct object_list **process_queue_end = &process_queue;
|
||||||
|
|
||||||
|
static int process_object(struct object *obj)
|
||||||
|
{
|
||||||
|
if (obj->type == commit_type) {
|
||||||
|
if (process_commit((struct commit *)obj))
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (obj->type == tree_type) {
|
||||||
|
if (process_tree((struct tree *)obj))
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (obj->type == blob_type) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (obj->type == tag_type) {
|
||||||
|
if (process_tag((struct tag *)obj))
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return error("Unable to determine requirements "
|
||||||
|
"of type %s for %s",
|
||||||
|
obj->type, sha1_to_hex(obj->sha1));
|
||||||
|
}
|
||||||
|
|
||||||
static int process(unsigned char *sha1, const char *type)
|
static int process(unsigned char *sha1, const char *type)
|
||||||
{
|
{
|
||||||
struct object *obj;
|
struct object *obj = lookup_object_type(sha1, type);
|
||||||
if (has_sha1_file(sha1))
|
if (has_sha1_file(sha1)) {
|
||||||
return 0;
|
parse_object(sha1);
|
||||||
obj = lookup_object_type(sha1, type);
|
/* We already have it, so we should scan it now. */
|
||||||
|
return process_object(obj);
|
||||||
|
}
|
||||||
if (object_list_contains(process_queue, obj))
|
if (object_list_contains(process_queue, obj))
|
||||||
return 0;
|
return 0;
|
||||||
object_list_insert(obj, process_queue_end);
|
object_list_insert(obj, process_queue_end);
|
||||||
@ -134,27 +161,8 @@ static int loop(void)
|
|||||||
return -1;
|
return -1;
|
||||||
if (!obj->type)
|
if (!obj->type)
|
||||||
parse_object(obj->sha1);
|
parse_object(obj->sha1);
|
||||||
if (obj->type == commit_type) {
|
if (process_object(obj))
|
||||||
if (process_commit((struct commit *)obj))
|
return -1;
|
||||||
return -1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (obj->type == tree_type) {
|
|
||||||
if (process_tree((struct tree *)obj))
|
|
||||||
return -1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (obj->type == blob_type) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (obj->type == tag_type) {
|
|
||||||
if (process_tag((struct tag *)obj))
|
|
||||||
return -1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
return error("Unable to determine requirements "
|
|
||||||
"of type %s for %s",
|
|
||||||
obj->type, sha1_to_hex(obj->sha1));
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -100,7 +100,7 @@ test_expect_success \
|
|||||||
git-checkout-cache -u -f -q -a &&
|
git-checkout-cache -u -f -q -a &&
|
||||||
git-update-cache --add yomin &&
|
git-update-cache --add yomin &&
|
||||||
read_tree_twoway $treeH $treeM &&
|
read_tree_twoway $treeH $treeM &&
|
||||||
git-ls-files --stage >4.out || exit
|
git-ls-files --stage >4.out || return 1
|
||||||
diff -u M.out 4.out >4diff.out
|
diff -u M.out 4.out >4diff.out
|
||||||
compare_change 4diff.out expected &&
|
compare_change 4diff.out expected &&
|
||||||
check_cache_at yomin clean'
|
check_cache_at yomin clean'
|
||||||
@ -114,7 +114,7 @@ test_expect_success \
|
|||||||
git-update-cache --add yomin &&
|
git-update-cache --add yomin &&
|
||||||
echo yomin yomin >yomin &&
|
echo yomin yomin >yomin &&
|
||||||
read_tree_twoway $treeH $treeM &&
|
read_tree_twoway $treeH $treeM &&
|
||||||
git-ls-files --stage >5.out || exit
|
git-ls-files --stage >5.out || return 1
|
||||||
diff -u M.out 5.out >5diff.out
|
diff -u M.out 5.out >5diff.out
|
||||||
compare_change 5diff.out expected &&
|
compare_change 5diff.out expected &&
|
||||||
check_cache_at yomin dirty'
|
check_cache_at yomin dirty'
|
||||||
@ -215,7 +215,7 @@ test_expect_success \
|
|||||||
echo nitfol nitfol >nitfol &&
|
echo nitfol nitfol >nitfol &&
|
||||||
git-update-cache --add nitfol &&
|
git-update-cache --add nitfol &&
|
||||||
read_tree_twoway $treeH $treeM &&
|
read_tree_twoway $treeH $treeM &&
|
||||||
git-ls-files --stage >14.out || exit
|
git-ls-files --stage >14.out || return 1
|
||||||
diff -u M.out 14.out >14diff.out
|
diff -u M.out 14.out >14diff.out
|
||||||
compare_change 14diff.out expected &&
|
compare_change 14diff.out expected &&
|
||||||
check_cache_at nitfol clean'
|
check_cache_at nitfol clean'
|
||||||
@ -229,7 +229,7 @@ test_expect_success \
|
|||||||
git-update-cache --add nitfol &&
|
git-update-cache --add nitfol &&
|
||||||
echo nitfol nitfol nitfol >nitfol &&
|
echo nitfol nitfol nitfol >nitfol &&
|
||||||
read_tree_twoway $treeH $treeM &&
|
read_tree_twoway $treeH $treeM &&
|
||||||
git-ls-files --stage >15.out || exit
|
git-ls-files --stage >15.out || return 1
|
||||||
diff -u M.out 15.out >15diff.out
|
diff -u M.out 15.out >15diff.out
|
||||||
compare_change 15diff.out expected &&
|
compare_change 15diff.out expected &&
|
||||||
check_cache_at nitfol dirty'
|
check_cache_at nitfol dirty'
|
||||||
|
@ -73,7 +73,7 @@ test_expect_success \
|
|||||||
'rm -f .git/index &&
|
'rm -f .git/index &&
|
||||||
git-update-cache --add yomin &&
|
git-update-cache --add yomin &&
|
||||||
git-read-tree -m -u $treeH $treeM &&
|
git-read-tree -m -u $treeH $treeM &&
|
||||||
git-ls-files --stage >4.out || exit
|
git-ls-files --stage >4.out || return 1
|
||||||
diff --unified=0 M.out 4.out >4diff.out
|
diff --unified=0 M.out 4.out >4diff.out
|
||||||
compare_change 4diff.out expected &&
|
compare_change 4diff.out expected &&
|
||||||
check_cache_at yomin clean &&
|
check_cache_at yomin clean &&
|
||||||
@ -90,7 +90,7 @@ test_expect_success \
|
|||||||
git-update-cache --add yomin &&
|
git-update-cache --add yomin &&
|
||||||
echo yomin yomin >yomin &&
|
echo yomin yomin >yomin &&
|
||||||
git-read-tree -m -u $treeH $treeM &&
|
git-read-tree -m -u $treeH $treeM &&
|
||||||
git-ls-files --stage >5.out || exit
|
git-ls-files --stage >5.out || return 1
|
||||||
diff --unified=0 M.out 5.out >5diff.out
|
diff --unified=0 M.out 5.out >5diff.out
|
||||||
compare_change 5diff.out expected &&
|
compare_change 5diff.out expected &&
|
||||||
check_cache_at yomin dirty &&
|
check_cache_at yomin dirty &&
|
||||||
@ -192,7 +192,7 @@ test_expect_success \
|
|||||||
echo nitfol nitfol >nitfol &&
|
echo nitfol nitfol >nitfol &&
|
||||||
git-update-cache --add nitfol &&
|
git-update-cache --add nitfol &&
|
||||||
git-read-tree -m -u $treeH $treeM &&
|
git-read-tree -m -u $treeH $treeM &&
|
||||||
git-ls-files --stage >14.out || exit
|
git-ls-files --stage >14.out || return 1
|
||||||
diff --unified=0 M.out 14.out >14diff.out
|
diff --unified=0 M.out 14.out >14diff.out
|
||||||
compare_change 14diff.out expected &&
|
compare_change 14diff.out expected &&
|
||||||
sum bozbar frotz >actual14.sum &&
|
sum bozbar frotz >actual14.sum &&
|
||||||
@ -212,7 +212,7 @@ test_expect_success \
|
|||||||
git-update-cache --add nitfol &&
|
git-update-cache --add nitfol &&
|
||||||
echo nitfol nitfol nitfol >nitfol &&
|
echo nitfol nitfol nitfol >nitfol &&
|
||||||
git-read-tree -m -u $treeH $treeM &&
|
git-read-tree -m -u $treeH $treeM &&
|
||||||
git-ls-files --stage >15.out || exit
|
git-ls-files --stage >15.out || return 1
|
||||||
diff --unified=0 M.out 15.out >15diff.out
|
diff --unified=0 M.out 15.out >15diff.out
|
||||||
compare_change 15diff.out expected &&
|
compare_change 15diff.out expected &&
|
||||||
check_cache_at nitfol dirty &&
|
check_cache_at nitfol dirty &&
|
||||||
|
@ -120,7 +120,7 @@ test_expect_success \
|
|||||||
git-checkout-cache -u -f -q -a &&
|
git-checkout-cache -u -f -q -a &&
|
||||||
git-update-cache --add yomin &&
|
git-update-cache --add yomin &&
|
||||||
read_tree_twoway $treeH $treeM &&
|
read_tree_twoway $treeH $treeM &&
|
||||||
git-ls-files --stage >4.out || exit
|
git-ls-files --stage >4.out || return 1
|
||||||
diff -u M.out 4.out >4diff.out
|
diff -u M.out 4.out >4diff.out
|
||||||
compare_change 4diff.out expected &&
|
compare_change 4diff.out expected &&
|
||||||
check_cache_at yomin clean'
|
check_cache_at yomin clean'
|
||||||
@ -136,7 +136,7 @@ test_expect_success \
|
|||||||
git-update-cache --add yomin &&
|
git-update-cache --add yomin &&
|
||||||
echo yomin yomin >yomin &&
|
echo yomin yomin >yomin &&
|
||||||
read_tree_twoway $treeH $treeM &&
|
read_tree_twoway $treeH $treeM &&
|
||||||
git-ls-files --stage >5.out || exit
|
git-ls-files --stage >5.out || return 1
|
||||||
diff -u M.out 5.out >5diff.out
|
diff -u M.out 5.out >5diff.out
|
||||||
compare_change 5diff.out expected &&
|
compare_change 5diff.out expected &&
|
||||||
check_cache_at yomin dirty'
|
check_cache_at yomin dirty'
|
||||||
@ -241,7 +241,7 @@ test_expect_success \
|
|||||||
echo nitfol nitfol >nitfol &&
|
echo nitfol nitfol >nitfol &&
|
||||||
git-update-cache --add nitfol &&
|
git-update-cache --add nitfol &&
|
||||||
read_tree_twoway $treeH $treeM &&
|
read_tree_twoway $treeH $treeM &&
|
||||||
git-ls-files --stage >14.out || exit
|
git-ls-files --stage >14.out || return 1
|
||||||
diff -u M.out 14.out >14diff.out
|
diff -u M.out 14.out >14diff.out
|
||||||
compare_change 14diff.out expected &&
|
compare_change 14diff.out expected &&
|
||||||
check_cache_at nitfol clean'
|
check_cache_at nitfol clean'
|
||||||
@ -255,7 +255,7 @@ test_expect_success \
|
|||||||
git-update-cache --add nitfol &&
|
git-update-cache --add nitfol &&
|
||||||
echo nitfol nitfol nitfol >nitfol &&
|
echo nitfol nitfol nitfol >nitfol &&
|
||||||
read_tree_twoway $treeH $treeM &&
|
read_tree_twoway $treeH $treeM &&
|
||||||
git-ls-files --stage >15.out || exit
|
git-ls-files --stage >15.out || return 1
|
||||||
diff -u M.out 15.out >15diff.out
|
diff -u M.out 15.out >15diff.out
|
||||||
compare_change 15diff.out expected &&
|
compare_change 15diff.out expected &&
|
||||||
check_cache_at nitfol dirty'
|
check_cache_at nitfol dirty'
|
||||||
@ -352,7 +352,7 @@ test_expect_success \
|
|||||||
sed -e "s/such as/SUCH AS/" bozbar-old >bozbar &&
|
sed -e "s/such as/SUCH AS/" bozbar-old >bozbar &&
|
||||||
git-update-cache --add bozbar &&
|
git-update-cache --add bozbar &&
|
||||||
read_tree_twoway $treeH $treeM &&
|
read_tree_twoway $treeH $treeM &&
|
||||||
git-ls-files --stage >22.out || exit
|
git-ls-files --stage >22.out || return 1
|
||||||
diff -u M.out 22.out >22diff.out
|
diff -u M.out 22.out >22diff.out
|
||||||
compare_change 22diff.out &&
|
compare_change 22diff.out &&
|
||||||
check_cache_at bozbar clean'
|
check_cache_at bozbar clean'
|
||||||
|
@ -93,3 +93,4 @@ test_expect_success \
|
|||||||
test -d tmp-path1 &&
|
test -d tmp-path1 &&
|
||||||
test -f tmp-path1/file1'
|
test -f tmp-path1/file1'
|
||||||
|
|
||||||
|
test_done
|
||||||
|
@ -66,3 +66,5 @@ test_expect_success \
|
|||||||
--exclude-from=.git/ignore \
|
--exclude-from=.git/ignore \
|
||||||
>output &&
|
>output &&
|
||||||
diff -u expect output'
|
diff -u expect output'
|
||||||
|
|
||||||
|
test_done
|
||||||
|
@ -191,7 +191,7 @@ test_expect_success \
|
|||||||
'rm -fr Z [A-Z][A-Z] &&
|
'rm -fr Z [A-Z][A-Z] &&
|
||||||
git-read-tree $tree_A &&
|
git-read-tree $tree_A &&
|
||||||
git-checkout-cache -f -a &&
|
git-checkout-cache -f -a &&
|
||||||
git-read-tree -m $tree_O || (exit 1)
|
git-read-tree -m $tree_O || return 1
|
||||||
git-update-cache --refresh >/dev/null ;# this can exit non-zero
|
git-update-cache --refresh >/dev/null ;# this can exit non-zero
|
||||||
git-diff-files >.test-a &&
|
git-diff-files >.test-a &&
|
||||||
cmp_diff_files_output .test-a .test-recursive-OA'
|
cmp_diff_files_output .test-a .test-recursive-OA'
|
||||||
@ -201,7 +201,7 @@ test_expect_success \
|
|||||||
'rm -fr Z [A-Z][A-Z] &&
|
'rm -fr Z [A-Z][A-Z] &&
|
||||||
git-read-tree $tree_B &&
|
git-read-tree $tree_B &&
|
||||||
git-checkout-cache -f -a &&
|
git-checkout-cache -f -a &&
|
||||||
git-read-tree -m $tree_O || (exit 1)
|
git-read-tree -m $tree_O || return 1
|
||||||
git-update-cache --refresh >/dev/null ;# this can exit non-zero
|
git-update-cache --refresh >/dev/null ;# this can exit non-zero
|
||||||
git-diff-files >.test-a &&
|
git-diff-files >.test-a &&
|
||||||
cmp_diff_files_output .test-a .test-recursive-OB'
|
cmp_diff_files_output .test-a .test-recursive-OB'
|
||||||
@ -211,7 +211,7 @@ test_expect_success \
|
|||||||
'rm -fr Z [A-Z][A-Z] &&
|
'rm -fr Z [A-Z][A-Z] &&
|
||||||
git-read-tree $tree_B &&
|
git-read-tree $tree_B &&
|
||||||
git-checkout-cache -f -a &&
|
git-checkout-cache -f -a &&
|
||||||
git-read-tree -m $tree_A || (exit 1)
|
git-read-tree -m $tree_A || return 1
|
||||||
git-update-cache --refresh >/dev/null ;# this can exit non-zero
|
git-update-cache --refresh >/dev/null ;# this can exit non-zero
|
||||||
git-diff-files >.test-a &&
|
git-diff-files >.test-a &&
|
||||||
cmp_diff_files_output .test-a .test-recursive-AB'
|
cmp_diff_files_output .test-a .test-recursive-AB'
|
||||||
|
@ -30,3 +30,5 @@ do
|
|||||||
"git-apply <diff.$i-$j && diff frotz.$j frotz"
|
"git-apply <diff.$i-$j && diff frotz.$j frotz"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
test_done
|
||||||
|
@ -16,7 +16,7 @@ test_expect_success \
|
|||||||
for i in a b c
|
for i in a b c
|
||||||
do
|
do
|
||||||
dd if=/dev/zero bs=4k count=1 | tr "\\0" $i >$i &&
|
dd if=/dev/zero bs=4k count=1 | tr "\\0" $i >$i &&
|
||||||
git-update-cache --add $i || exit
|
git-update-cache --add $i || return 1
|
||||||
done &&
|
done &&
|
||||||
cat c >d && echo foo >>d && git-update-cache --add d &&
|
cat c >d && echo foo >>d && git-update-cache --add d &&
|
||||||
tree=`git-write-tree` &&
|
tree=`git-write-tree` &&
|
||||||
@ -29,7 +29,7 @@ test_expect_success \
|
|||||||
while read object
|
while read object
|
||||||
do
|
do
|
||||||
t=`git-cat-file -t $object` &&
|
t=`git-cat-file -t $object` &&
|
||||||
git-cat-file $t $object || exit 1
|
git-cat-file $t $object || return 1
|
||||||
done <obj-list
|
done <obj-list
|
||||||
} >expect'
|
} >expect'
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ test_expect_success \
|
|||||||
do
|
do
|
||||||
cmp $path ../.git/$path || {
|
cmp $path ../.git/$path || {
|
||||||
echo $path differs.
|
echo $path differs.
|
||||||
exit 1
|
return 1
|
||||||
}
|
}
|
||||||
done'
|
done'
|
||||||
cd $TRASH
|
cd $TRASH
|
||||||
@ -88,7 +88,7 @@ test_expect_success \
|
|||||||
do
|
do
|
||||||
cmp $path ../.git/$path || {
|
cmp $path ../.git/$path || {
|
||||||
echo $path differs.
|
echo $path differs.
|
||||||
exit 1
|
return 1
|
||||||
}
|
}
|
||||||
done'
|
done'
|
||||||
cd $TRASH
|
cd $TRASH
|
||||||
@ -106,7 +106,7 @@ test_expect_success \
|
|||||||
while read object
|
while read object
|
||||||
do
|
do
|
||||||
t=`git-cat-file -t $object` &&
|
t=`git-cat-file -t $object` &&
|
||||||
git-cat-file $t $object || exit 1
|
git-cat-file $t $object || return 1
|
||||||
done <obj-list
|
done <obj-list
|
||||||
} >current &&
|
} >current &&
|
||||||
diff expect current'
|
diff expect current'
|
||||||
@ -122,7 +122,7 @@ test_expect_success \
|
|||||||
while read object
|
while read object
|
||||||
do
|
do
|
||||||
t=`git-cat-file -t $object` &&
|
t=`git-cat-file -t $object` &&
|
||||||
git-cat-file $t $object || exit 1
|
git-cat-file $t $object || return 1
|
||||||
done <obj-list
|
done <obj-list
|
||||||
} >current &&
|
} >current &&
|
||||||
diff expect current'
|
diff expect current'
|
||||||
|
@ -18,7 +18,7 @@ test_expect_success setup '
|
|||||||
do
|
do
|
||||||
sleep 1 &&
|
sleep 1 &&
|
||||||
commit=$(echo "Commit #$i" | git-commit-tree $tree -p $parent) &&
|
commit=$(echo "Commit #$i" | git-commit-tree $tree -p $parent) &&
|
||||||
parent=$commit || exit
|
parent=$commit || return 1
|
||||||
done &&
|
done &&
|
||||||
echo "$commit" >.git/HEAD &&
|
echo "$commit" >.git/HEAD &&
|
||||||
git clone -l ./. victim &&
|
git clone -l ./. victim &&
|
||||||
@ -31,7 +31,7 @@ test_expect_success setup '
|
|||||||
do
|
do
|
||||||
sleep 1 &&
|
sleep 1 &&
|
||||||
commit=$(echo "Rebase #$i" | git-commit-tree $tree -p $parent) &&
|
commit=$(echo "Rebase #$i" | git-commit-tree $tree -p $parent) &&
|
||||||
parent=$commit || exit
|
parent=$commit || return 1
|
||||||
done &&
|
done &&
|
||||||
echo "$commit" >.git/HEAD &&
|
echo "$commit" >.git/HEAD &&
|
||||||
echo Rebase &&
|
echo Rebase &&
|
||||||
@ -52,3 +52,5 @@ test_expect_success \
|
|||||||
git-send-pack --force ./victim/.git/ master &&
|
git-send-pack --force ./victim/.git/ master &&
|
||||||
cmp victim/.git/refs/heads/master .git/refs/heads/master
|
cmp victim/.git/refs/heads/master .git/refs/heads/master
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_done
|
||||||
|
@ -5,8 +5,9 @@
|
|||||||
|
|
||||||
# For repeatability, reset the environment to known value.
|
# For repeatability, reset the environment to known value.
|
||||||
LANG=C
|
LANG=C
|
||||||
|
PAGER=cat
|
||||||
TZ=UTC
|
TZ=UTC
|
||||||
export LANG TZ
|
export LANG PAGER TZ
|
||||||
unset AUTHOR_DATE
|
unset AUTHOR_DATE
|
||||||
unset AUTHOR_EMAIL
|
unset AUTHOR_EMAIL
|
||||||
unset AUTHOR_NAME
|
unset AUTHOR_NAME
|
||||||
@ -35,6 +36,7 @@ unset SHA1_FILE_DIRECTORY
|
|||||||
|
|
||||||
error () {
|
error () {
|
||||||
echo "* error: $*"
|
echo "* error: $*"
|
||||||
|
trap - exit
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,6 +64,7 @@ do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
exec 5>&1
|
||||||
if test "$verbose" = "t"
|
if test "$verbose" = "t"
|
||||||
then
|
then
|
||||||
exec 4>&2 3>&1
|
exec 4>&2 3>&1
|
||||||
@ -72,6 +75,8 @@ fi
|
|||||||
test_failure=0
|
test_failure=0
|
||||||
test_count=0
|
test_count=0
|
||||||
|
|
||||||
|
trap 'echo >&5 "FATAL: Unexpected exit with code $?"; exit 1' exit
|
||||||
|
|
||||||
|
|
||||||
# You are not expected to call test_ok_ and test_failure_ directly, use
|
# You are not expected to call test_ok_ and test_failure_ directly, use
|
||||||
# the text_expect_* functions instead.
|
# the text_expect_* functions instead.
|
||||||
@ -87,31 +92,39 @@ test_failure_ () {
|
|||||||
say "FAIL $test_count: $1"
|
say "FAIL $test_count: $1"
|
||||||
shift
|
shift
|
||||||
echo "$@" | sed -e 's/^/ /'
|
echo "$@" | sed -e 's/^/ /'
|
||||||
test "$immediate" == "" || exit 1
|
test "$immediate" = "" || { trap - exit; exit 1; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
test_debug () {
|
test_debug () {
|
||||||
test "$debug" == "" || eval "$1"
|
test "$debug" = "" || eval "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
test_run_ () {
|
||||||
|
eval >&3 2>&4 "$1"
|
||||||
|
eval_ret="$?"
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_failure () {
|
test_expect_failure () {
|
||||||
test "$#" == 2 ||
|
test "$#" = 2 ||
|
||||||
error "bug in the test script: not 2 parameters to test-expect-failure"
|
error "bug in the test script: not 2 parameters to test-expect-failure"
|
||||||
say >&3 "expecting failure: $2"
|
say >&3 "expecting failure: $2"
|
||||||
if eval >&3 2>&4 "$2"
|
test_run_ "$2"
|
||||||
|
if [ "$?" = 0 -a "$eval_ret" != 0 ]
|
||||||
then
|
then
|
||||||
test_failure_ "$@"
|
|
||||||
else
|
|
||||||
test_ok_ "$1"
|
test_ok_ "$1"
|
||||||
|
else
|
||||||
|
test_failure_ "$@"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success () {
|
test_expect_success () {
|
||||||
test "$#" == 2 ||
|
test "$#" = 2 ||
|
||||||
error "bug in the test script: not 2 parameters to test-expect-success"
|
error "bug in the test script: not 2 parameters to test-expect-success"
|
||||||
say >&3 "expecting success: $2"
|
say >&3 "expecting success: $2"
|
||||||
if eval >&3 2>&4 "$2"
|
test_run_ "$2"
|
||||||
|
if [ "$?" = 0 -a "$eval_ret" = 0 ]
|
||||||
then
|
then
|
||||||
test_ok_ "$1"
|
test_ok_ "$1"
|
||||||
else
|
else
|
||||||
@ -120,6 +133,7 @@ test_expect_success () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
test_done () {
|
test_done () {
|
||||||
|
trap - exit
|
||||||
case "$test_failure" in
|
case "$test_failure" in
|
||||||
0)
|
0)
|
||||||
# We could:
|
# We could:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user