Anonymous avatar Anonymous committed 92e802c Merge

GIT 1.0.7

Signed-off-by: Junio C Hamano <junkio@cox.net>;

Comments (0)

Files changed (61)

 *.exe
 libgit.a
 *.o
+*.py[co]

Documentation/cvs-migration.txt

 git has a couple of alternatives, though, that you may find sufficient
 or even superior depending on your use.  One is called "git-whatchanged"
 (for obvious reasons) and the other one is called "pickaxe" ("a tool for
-the software archeologist"). 
+the software archaeologist"). 
 
 The "git-whatchanged" script is a truly trivial script that can give you
 a good overview of what has changed in a file or a directory (or an

Documentation/diff-format.txt

 What -p option produces is slightly different from the
 traditional diff format.
 
-1.   It is preceeded with a "git diff" header, that looks like
+1.   It is preceded with a "git diff" header, that looks like
      this:
 
      diff --git a/file1 b/file2

Documentation/diff-options.txt

 --abbrev[=<n>]::
 	Instead of showing the full 40-byte hexadecimal object
 	name in diff-raw format output and diff-tree header
-	lines, show only handful dhexigits prefix.  This is
+	lines, show only handful hexdigits prefix.  This is
 	independent of --full-index option above, which controls
 	the diff-patch output format.  Non default number of
 	digits can be specified with --abbrev=<n>.

Documentation/git-add.txt

 ----------
 
 The list of <file> given to the command is fed to `git-ls-files`
-command to list files that are not registerd in the index and
+command to list files that are not registered in the index and
 are not ignored/excluded by `$GIT_DIR/info/exclude` file or
 `.gitignore` file in each directory.  This means two things:
 

Documentation/git-am.txt

 
 SYNOPSIS
 --------
+[verse]
 'git-am' [--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way] <mbox>...
 'git-am' [--skip | --resolved]
 

Documentation/git-apply.txt

 
 SYNOPSIS
 --------
-'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply] [--no-add] [--index-info] [--allow-binary-replacement] [-z] [<patch>...]
+[verse]
+'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply]
+	  [--no-add] [--index-info] [--allow-binary-replacement] [-z]
+	  [<patch>...]
 
 DESCRIPTION
 -----------

Documentation/git-archimport.txt

 
 SYNOPSIS
 --------
-`git-archimport` [ -h ] [ -v ] [ -o ] [ -a ] [ -f ] [ -T ]
-                 [ -D depth ] [ -t tempdir ] 
-                 <archive/branch> [ <archive/branch> ]
+[verse]
+`git-archimport` [-h] [-v] [-o] [-a] [-f] [-T] [-D depth] [-t tempdir]
+               <archive/branch> [ <archive/branch> ]
 
 DESCRIPTION
 -----------
 Imports a project from one or more Arch repositories. It will follow branches
 and repositories within the namespaces defined by the <archive/branch>
-parameters suppplied. If it cannot find the remote branch a merge comes from
+parameters supplied. If it cannot find the remote branch a merge comes from
 it will just import it as a regular commit. If it can find it, it will mark it 
 as a merge whenever possible (see discussion below). 
 

Documentation/git-cat-file.txt

 
 SYNOPSIS
 --------
-'git-cat-file' (-t | -s | -e | <type>) <object>
+'git-cat-file' [-t | -s | -e | <type>] <object>
 
 DESCRIPTION
 -----------

Documentation/git-checkout-index.txt

 
 SYNOPSIS
 --------
+[verse]
 'git-checkout-index' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
-	[--stage=<number>] [--] <file>...
+		   [--stage=<number>] [--] <file>...
 
 DESCRIPTION
 -----------

Documentation/git-clone.txt

 
 SYNOPSIS
 --------
-'git-clone' [-l [-s]] [-q] [-n] [-u <upload-pack>] <repository> [<directory>]
+[verse]
+'git-clone' [-l [-s]] [-q] [-n] [-u <upload-pack>]
+	  <repository> [<directory>]
 
 DESCRIPTION
 -----------

Documentation/git-commit-tree.txt

 
 (nb "<", ">" and "\n"s are stripped)
 
-In `.git/config` file, the following items are used:
+In `.git/config` file, the following items are used for GIT_AUTHOR_NAME and
+GIT_AUTHOR_EMAIL:
 
 	[user]
 		name = "Your Name"

Documentation/git-commit.txt

 
 SYNOPSIS
 --------
-'git-commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>] [-e] [--] <file>...
+[verse]
+'git-commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>]
+	   [-e] [--] <file>...
 
 DESCRIPTION
 -----------

Documentation/git-cvsexportcommit.txt

 
 SYNOPSIS
 --------
-git-cvsexportcommmit.perl 
-                        [ -h ] [ -v ] [ -c ] [ -p ] [PARENTCOMMIT] COMMITID 
+'git-cvsexportcommmit' [-h] [-v] [-c] [-p] [PARENTCOMMIT] COMMITID
 
 
 DESCRIPTION

Documentation/git-cvsimport.txt

 
 SYNOPSIS
 --------
-'git-cvsimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ]
-			[ -d <CVSROOT> ] [ -p <options-for-cvsps> ]
-			[ -C <git_repository> ] [ -i ] [ -P <file> ] [ -k ]
-			[ -s <subst> ] [ -m ] [ -M regex ] [ <CVS_module> ]
+[verse]
+'git-cvsimport' [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>] [-s <subst>]
+	      [-p <options-for-cvsps>] [-C <git_repository>] [-i] [-P <file>]
+	      [-m] [-M regex] [<CVS_module>]
 
 
 DESCRIPTION

Documentation/git-daemon.txt

 
 SYNOPSIS
 --------
+[verse]
 'git-daemon' [--verbose] [--syslog] [--inetd | --port=n] [--export-all]
-             [--timeout=n] [--init-timeout=n] [--strict-paths] [directory...]
+           [--timeout=n] [--init-timeout=n] [--strict-paths] [directory...]
 
 DESCRIPTION
 -----------

Documentation/git-diff-index.txt

 	contents (the ones I'd write with a "git-write-tree")
 
 For example, let's say that you have worked on your working directory, updated
-some files in the index and are ready to commit. You want to see eactly
+some files in the index and are ready to commit. You want to see exactly
 *what* you are going to commit is without having to write a new tree
 object and compare it that way, and to do that, you just do
 
 actually look at the contents of the file at all. So maybe
 `kernel/sched.c` hasn't actually changed, and it's just that you
 touched it. In either case, it's a note that you need to
-"git-upate-index" it to make the index be in sync.
+"git-update-index" it to make the index be in sync.
 
 NOTE: You can have a mixture of files show up as "has been updated"
 and "is still dirty in the working directory" together. You can always

Documentation/git-diff-tree.txt

 
 SYNOPSIS
 --------
-'git-diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty] [-t] [-r] [--root] [<common diff options>] <tree-ish> [<tree-ish>] [<path>...]
+[verse]
+'git-diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty] [-t] [-r]
+	      [--root] [<common diff options>] <tree-ish> [<tree-ish>] [<path>...]
 
 DESCRIPTION
 -----------
 -s::
 	By default, "git-diff-tree --stdin" shows differences,
 	either in machine-readable form (without '-p') or in patch
-	form (with '-p').  This output can be supressed.  It is
+	form (with '-p').  This output can be suppressed.  It is
 	only useful with '-v' flag.
 
 -v::

Documentation/git-diff.txt

 <1> instead of using the tip of the current branch, compare with the
 tip of "test" branch.
 <2> instead of comparing with the tip of "test" branch, compare with
-the tip of the curren branch, but limit the comparison to the
+the tip of the current branch, but limit the comparison to the
 file "test".
 <3> compare the version before the last commit and the last commit.
 ------------

Documentation/git-format-patch.txt

 
 SYNOPSIS
 --------
-'git-format-patch' [-n | -k] [-o <dir> | --stdout] [-s] [-c] [--mbox] [--diff-options] <his> [<mine>]
+[verse]
+'git-format-patch' [-n | -k] [-o <dir> | --stdout] [-s] [-c] [--mbox]
+		 [--diff-options] <his> [<mine>]
 
 DESCRIPTION
 -----------
 
 See Also
 --------
-gitlink:git-am[1], gitlink:git-send-email
+gitlink:git-am[1], gitlink:git-send-email[1]
 
 
 Author

Documentation/git-fsck-objects.txt

 
 SYNOPSIS
 --------
-'git-fsck-objects' [--tags] [--root] [--unreachable] [--cache] [--standalone | --full] [--strict] [<object>*]
+[verse]
+'git-fsck-objects' [--tags] [--root] [--unreachable] [--cache]
+		 [--standalone | --full] [--strict] [<object>*]
 
 DESCRIPTION
 -----------

Documentation/git-grep.txt

 
 SYNOPSIS
 --------
-'git-grep' <option>... <pattern> <path>...
+'git-grep' [<option>...] <pattern> [<path>...]
 
 DESCRIPTION
 -----------
 	The pattern to look for.
 
 <path>...::
-
 	Optional paths to limit the set of files to be searched;
 	passed to `git-ls-files`.
 

Documentation/git-http-fetch.txt

 
 NAME
 ----
-git-http-fetch - Downloads a remote git repository via HTTP
+git-http-fetch - downloads a remote git repository via HTTP
 
 
 SYNOPSIS
 --------
-'git-http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
+'git-http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] <commit> <url>
 
 DESCRIPTION
 -----------

Documentation/git-init-db.txt

 
 SYNOPSIS
 --------
-'git-init-db' [--template=<template_directory>]
+'git-init-db' [--template=<template_directory>] [--shared]
 
 
 OPTIONS
 --template=<template_directory>::
 	Provide the directory in from which templates will be used.
 
+--shared::
+	Specify that the git repository is to be shared amongst several users.
+
 
 DESCRIPTION
 -----------
 environment variable then the sha1 directories are created underneath -
 otherwise the default `$GIT_DIR/objects` directory is used.
 
-`git-init-db` won't hurt an existing repository.
+A shared repository allows users belonging to the same group to push into that
+repository. When specifying `--shared` the config variable "core.sharedRepository" 
+is set to 'true' so that directories under `$GIT_DIR` are made group writable
+(and g+sx, since the git group may be not the primary group of all users).
+
+
+Running `git-init-db` in an existing repository is safe. It will not overwrite
+things that are already there. The primary reason for rerunning `git-init-db`
+is to pick up newly added templates.
+
 
 
 EXAMPLES

Documentation/git-ls-files.txt

 	H::	cached
 	M::	unmerged
 	R::	removed/deleted
-	C::	modifed/changed
+	C::	modified/changed
 	K::	to be killed
 	?	other
 

Documentation/git-pack-objects.txt

 	output of the command.
 
 --stdout::
-	Write the pack contents (what would have been writtin to
+	Write the pack contents (what would have been written to
 	.pack file) out to the standard output.
 
 --window and --depth::

Documentation/git-repo-config.txt

 actually the section and the key separated by a dot, and the value will be
 escaped.
 
-If you want to set/unset an option which can occor on multiple lines, you
+If you want to set/unset an option which can occur on multiple lines, you
 should provide a POSIX regex for the value. If you want to handle the lines
-*not* matching the regex, just prepend a single exlamation mark in front
+*not* matching the regex, just prepend a single exclamation mark in front
 (see EXAMPLES).
 
 This command will fail if

Documentation/git-rev-list.txt

 
 SYNOPSIS
 --------
+[verse]
 'git-rev-list' [ \--max-count=number ]
-	[ \--max-age=timestamp ]
-	[ \--min-age=timestamp ]
-	[ \--sparse ]
-	[ \--no-merges ]
-	[ \--all ]
-	[ [ \--merge-order [ \--show-breaks ] ] | [ \--topo-order ] | ]
-	[ \--parents ]
-	[ \--objects [ \--unpacked ] ]
-	[ \--pretty | \--header | ]
-	[ \--bisect ]
-	<commit>... [ \-- <paths>... ]
+	     [ \--max-age=timestamp ]
+	     [ \--min-age=timestamp ]
+	     [ \--sparse ]
+	     [ \--no-merges ]
+	     [ \--all ]
+	     [ [ \--merge-order [ \--show-breaks ] ] | [ \--topo-order ] ]
+	     [ \--parents ]
+	     [ \--objects [ \--unpacked ] ]
+	     [ \--pretty | \--header ]
+	     [ \--bisect ]
+	     <commit>... [ \-- <paths>... ]
 
 DESCRIPTION
 -----------
 +
 Commits marked with (^) are not parents of the immediately preceding commit.
 These "breaks" represent necessary discontinuities implied by trying to
-represent an arbtirary DAG in a linear form.
+represent an arbitrary DAG in a linear form.
 +
 `--show-breaks` is only valid if `--merge-order` is also specified.
 

Documentation/git-show-branch.txt

 displayed, indented N places.  If a commit is on the I-th
 branch, the I-th indentation character shows a '+' sign;
 otherwise it shows a space.  Each commit shows a short name that
-can be used as an exended SHA1 to name that commit.
+can be used as an extended SHA1 to name that commit.
 
 The following example shows three branches, "master", "fixes"
 and "mhf":

Documentation/git-svnimport.txt

 --------
 'git-svnimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ] [ -d | -D ]
 			[ -C <GIT_repository> ] [ -i ] [ -u ] [-l limit_rev]
-			[ -b branch_subdir ] [ -t trunk_subdir ] [ -T tag_subdir ]
+			[ -b branch_subdir ] [ -T trunk_subdir ] [ -t tag_subdir ]
 			[ -s start_chg ] [ -m ] [ -M regex ]
 			<SVN_repository_URL> [ <path> ]
 
 -s <start_rev>::
         Start importing at this SVN change number. The  default is 1.
 +
-When importing incementally, you might need to edit the .git/svn2git file.
+When importing incrementally, you might need to edit the .git/svn2git file.
 
 -i::
 	Import-only: don't perform a checkout after importing.  This option
 	ensures the working directory and index remain untouched and will
 	not create them if they do not exist.
 
--t <trunk_subdir>::
+-T <trunk_subdir>::
 	Name the SVN trunk. Default "trunk".
 
--T <tag_subdir>::
+-t <tag_subdir>::
 	Name the SVN subdirectory for tags. Default "tags".
 
 -b <branch_subdir>::

Documentation/git.txt

 gitlink:git-send-email[1]::
 	Send patch e-mails out of "format-patch --mbox" output.
 
-gitlink:git-symbolic-refs[1]::
+gitlink:git-symbolic-ref[1]::
 	Read and modify symbolic refs.
 
 gitlink:git-stripspace[1]::

Documentation/glossary.txt

 	In git's context, synonym to object name.
 
 object database::
-	Stores a set of "objects", and an individial object is identified
+	Stores a set of "objects", and an individual object is identified
 	by its object name. The objects usually live in `$GIT_DIR/objects/`.
 
 blob object::

Documentation/howto/isolate-bugs-with-bisect.txt

 	git bisect bad master		<- mark "master" as the bad state
 	git bisect good ORIG_HEAD	<- mark ORIG_HEAD as good (or
 					   whatever other known-good 
-					   thing you booted laste)
+					   thing you booted last)
 
 and at this point "git bisect" will churn for a while, and tell you what 
 the mid-point between those two commits are, and check that state out as 

Documentation/repository-layout.txt

 . You can be using `objects/info/alternates` mechanism, or
 `$GIT_ALTERNATE_OBJECT_DIRECTORIES` mechanism to 'borrow'
 objects from other object stores.  A repository with this kind
-of incompete object store is not suitable to be published for
+of incomplete object store is not suitable to be published for
 use with dumb transports but otherwise is OK as long as
 `objects/info/alternates` points at the right object stores
 it borrows from.
 	up-to-date if the repository is published for dumb
 	transports.  The `git-receive-pack` command, which is
 	run on a remote repository when you `git push` into it,
-	runs `hooks/update` hook to help you achive this.
+	runs `hooks/update` hook to help you achieve this.
 
 info/grafts::
 	This file records fake commit ancestry information, to
 # Define USE_STDEV below if you want git to care about the underlying device
 # change being considered an inode change from the update-cache perspective.
 
-GIT_VERSION = 1.0.6
+GIT_VERSION = 1.0.7
 
 # CFLAGS and LDFLAGS are for the users to override from the command line.
 
 
 	if (S_ISLNK(mode))
 		return symlink(buf, path);
-	fd = open(path, O_CREAT | O_EXCL | O_WRONLY | O_TRUNC, (mode & 0100) ? 0777 : 0666);
+	fd = open(path, O_CREAT | O_EXCL | O_WRONLY, (mode & 0100) ? 0777 : 0666);
 	if (fd < 0)
 		return -1;
 	while (size) {
 			}
 			if (errno != EEXIST)
 				break;
-		}			
+			++nr;
+		}
 	}
 	die("unable to write file %s mode %o", path, mode);
 }
 	const char* value_regex, int multi_replace)
 {
 	int i;
-	struct stat st;
-	int fd;
+	int fd, in_fd;
 	char* config_filename = strdup(git_path("config"));
 	char* lock_file = strdup(git_path("config.lock"));
 	const char* last_dot = strrchr(key, '.');
 	/*
 	 * If .git/config does not exist yet, write a minimal version.
 	 */
-	if (stat(config_filename, &st)) {
+	in_fd = open(config_filename, O_RDONLY);
+	if ( in_fd < 0 ) {
 		free(store.key);
 
+		if ( ENOENT != errno ) {
+			error("opening %s: %s", config_filename,
+			      strerror(errno));
+			close(fd);
+			unlink(lock_file);
+			return 3; /* same as "invalid config file" */
+		}
 		/* if nothing to unset, error out */
 		if (value == NULL) {
 			close(fd);
 		store_write_section(fd, key);
 		store_write_pair(fd, key, value);
 	} else{
-		int in_fd;
+		struct stat st;
 		char* contents;
 		int i, copy_begin, copy_end, new_line = 0;
 
 			return 5;
 		}
 
-		in_fd = open(config_filename, O_RDONLY, 0666);
+		fstat(in_fd, &st);
 		contents = mmap(NULL, st.st_size, PROT_READ,
 			MAP_PRIVATE, in_fd, 0);
 		close(in_fd);
 
 	/*
 	 * NOTE! We will give precedence to day-of-month over month or
-	 * year numebers in the 1-12 range. So 05 is always "mday 5",
+	 * year numbers in the 1-12 range. So 05 is always "mday 5",
 	 * unless we already have a mday..
 	 *
 	 * IOW, 01 Apr 05 parses as "April 1st, 2005".
 	}
 	if (number > 0 && number < 32)
 		tm.tm_mday = number;
-	if (tm.tm_mon > now.tm_mon)
+	if (tm.tm_mon > now.tm_mon && tm.tm_year == now.tm_year)
 		tm.tm_year--;
 	return mktime(&tm);
 }
 			/* We come here with ce pointing at stage 1
 			 * (original tree) and ac[1] pointing at stage
 			 * 3 (unmerged).  show-modified with
-			 * report-mising set to false does not say the
+			 * report-missing set to false does not say the
 			 * file is deleted but reports true if work
 			 * tree does not have it, in which case we
 			 * fall through to report the unmerged state.
 			 * so it is safe for us to do this here.  Also
 			 * it does not smudge active_cache or active_nr
 			 * when it fails, so we do not have to worry about
-			 * cleaning it up oufselves either.
+			 * cleaning it up ourselves either.
 			 */
 			read_cache();
 	}
 static int create_file(const char *path, unsigned int mode)
 {
 	mode = (mode & 0100) ? 0777 : 0666;
-	return open(path, O_WRONLY | O_TRUNC | O_CREAT | O_EXCL, mode);
+	return open(path, O_WRONLY | O_CREAT | O_EXCL, mode);
 }
 
 static int write_entry(struct cache_entry *ce, const char *path, struct checkout *state)
  * enqueued, enqueuing the commit in a list of pending commits, in latest
  * commit date first order.
  *
- * The algorithm then preceeds to visit each commit in the pending queue.
+ * The algorithm then proceeds to visit each commit in the pending queue.
  * Upon each visit, the pending mass is added to the mass already seen for that
  * commit and then divided into N equal portions, where N is the number of
  * parents of the commit being visited. The divided portions are then injected
 		if (retval < 0) {
 			if (errno == EINTR)
 				continue;
-			error("waitpid failed (%s)", strerror(retval));
+			error("waitpid failed (%s)", strerror(errno));
 			goto error_die;
 		}
 		if (WIFSIGNALED(status)) {
 
 if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
 	echo "#"
-	echo "# It looks like your may be committing a MERGE."
+	echo "# It looks like you may be committing a MERGE."
 	echo "# If this is not correct, please remove the file"
 	echo "#	$GIT_DIR/MERGE_HEAD"
 	echo "# and try again"
 	then
 		pick_author_script='
 		/^author /{
+			s/'\''/'\''\\'\'\''/g
 			h
 			s/^author \([^<]*\) <[^>]*> .*$/\1/
 			s/'\''/'\''\'\'\''/g

git-compat-util.h

 static inline void *xmalloc(size_t size)
 {
 	void *ret = malloc(size);
+	if (!ret && !size)
+		ret = malloc(1);
 	if (!ret)
 		die("Out of memory, malloc failed");
 	return ret;
 static inline void *xrealloc(void *ptr, size_t size)
 {
 	void *ret = realloc(ptr, size);
+	if (!ret && !size)
+		ret = realloc(ptr, 1);
 	if (!ret)
 		die("Out of memory, realloc failed");
 	return ret;
 static inline void *xcalloc(size_t nmemb, size_t size)
 {
 	void *ret = calloc(nmemb, size);
+	if (!ret && (!nmemb || !size))
+		ret = calloc(1, 1);
 	if (!ret)
 		die("Out of memory, calloc failed");
 	return ret;
 reflist=$(get_remote_refs_for_fetch "$@")
 if test "$tags"
 then
-	taglist=$(git-ls-remote --tags "$remote" |
-		sed -e '
-			/\^/d
-			s/^[^	]*	//
-			s/.*/.&:&/')
+	taglist=$(IFS="	" &&
+		  git-ls-remote --tags "$remote" |
+	          while read sha1 name
+		  do
+			case "$name" in
+			(*^*) continue ;;
+			esac
+		  	if git-check-ref-format "$name"
+			then
+			    echo ".${name}:${name}"
+			else
+			    echo >&2 "warning: tag ${name} ignored"
+			fi
+		  done)
 	if test "$#" -gt 1
 	then
 		# remote URL plus explicit refspecs; we need to merge them.

git-format-patch.sh

 
 whosepatchScript='
 /^author /{
+	s/'\''/'\''\\'\'\''/g
 	s/author \(.*>\) \(.*\)$/au='\''\1'\'' ad='\''\2'\''/p
 	q
 }'

git-merge-one-file.sh

 		expr "$sz0" \< "$sz1" \* 2 >/dev/null || : >$orig
 		;;
 	*)
-		echo "Auto-merging $4."
+		echo "Auto-merging $4"
 		orig=`git-unpack-file $1`
 		;;
 	esac
 	fi
 
 	if [ $ret -ne 0 ]; then
-		echo "ERROR: Merge conflict in $4."
+		echo "ERROR: Merge conflict in $4"
 		exit 1
 	fi
 	exec git-update-index -- "$4"
 USAGE='[--mixed | --soft | --hard]  [<commit-ish>]'
 . git-sh-setup
 
-tmp=/var/tmp/reset.$$
+tmp=${GIT_DIR}/reset.$$
 trap 'rm -f $tmp-*' 0 1 2 3 15
 
 reset_type=--mixed

git-svnimport.perl

 sub conn {
 	my $self = shift;
 	my $repo = $self->{'fullrep'};
-	my $s = SVN::Ra->new($repo);
-
+	my $auth = SVN::Core::auth_open ([SVN::Client::get_simple_provider,
+			  SVN::Client::get_ssl_server_trust_file_provider,
+			  SVN::Client::get_username_provider]);
+	my $s = SVN::Ra->new(url => $repo, auth => $auth);
 	die "SVN connection to $repo: $!\n" unless defined $s;
 	$self->{'svn'} = $s;
 	$self->{'repo'} = $repo;
 	for (i = 1; i < argc; i++) {
 		char *arg = argv[i];
 
+		if (!strcmp(arg, "help")) {
+			show_help = 1;
+			continue;
+		}
+
 		if (strncmp(arg, "--", 2))
 			break;
 
 
 	/*
 	 * Copy the rest to the buffer, but avoid the special
-	 * characters '\n' '<' and '>' that act as delimeters on
+	 * characters '\n' '<' and '>' that act as delimiters on
 	 * a identification line
 	 */
 	for (i = 0; i < len; i++) {
 			}
 			else {
 				/* match with FNM_PATHNAME:
-				 * exclude has base (baselen long) inplicitly
+				 * exclude has base (baselen long) implicitly
 				 * in front of it.
 				 */
 				int baselen = x->baselen;
 		return offset;
 	e->offset = offset;
 	offset += write_object(f, e);
-	/* if we are delitified, write out its base object. */
+	/* if we are deltified, write out its base object. */
 	if (e->delta)
 		offset = write_one(f, e->delta, offset);
 	return offset;
 
 static char* key = NULL;
 static char* value = NULL;
-static regex_t* regex = NULL;
+static regex_t* regexp = NULL;
 static int do_all = 0;
 static int do_not_match = 0;
 static int seen = 0;
 static int show_config(const char* key_, const char* value_)
 {
 	if (!strcmp(key_, key) &&
-			(regex == NULL ||
+			(regexp == NULL ||
 			 (do_not_match ^
-			  !regexec(regex, value_, 0, NULL, 0)))) {
+			  !regexec(regexp, value_, 0, NULL, 0)))) {
 		if (do_all) {
 			printf("%s\n", value_);
 			return 0;
 			regex_++;
 		}
 
-		regex = (regex_t*)malloc(sizeof(regex_t));
-		if (regcomp(regex, regex_, REG_EXTENDED)) {
+		regexp = (regex_t*)malloc(sizeof(regex_t));
+		if (regcomp(regexp, regex_, REG_EXTENDED)) {
 			fprintf(stderr, "Invalid pattern: %s\n", regex_);
 			return -1;
 		}
 		free(value);
 	}
 	free(key);
-	if (regex) {
-		regfree(regex);
-		free(regex);
+	if (regexp) {
+		regfree(regexp);
+		free(regexp);
 	}
 
 	if (do_all)

t/t3300-funny-names.sh

 tree, index, and tree objects.
 '
 
-# since FAT/NTFS does not allow tabs in filenames, skip this test
-test "$(uname -o 2>/dev/null)" = Cygwin && exit 0
-
 . ./test-lib.sh
 
 p0='no-funny'
 cat >"$p1" "$p0"
 echo 'Foo Bar Baz' >"$p2"
 
+test -f "$p1" && cmp "$p0" "$p1" || {
+	# since FAT/NTFS does not allow tabs in filenames, skip this test
+	say 'Your filesystem does not allow tabs in filenames, test skipped.'
+	test_done
+}
+
 echo 'just space
 no-funny' >expected
 test_expect_success 'git-ls-files no-funny' \

t/t4000-diff-format.sh

 test_expect_success \
     'git-diff-files -p after editing work tree.' \
     'git-diff-files -p >current'
+
+# that's as far as it comes
+if [ "$(git repo-config --get core.filemode)" = false ]
+then
+	say 'filemode disabled on the filesystem'
+	test_done
+fi
+
 cat >expected <<\EOF
 diff --git a/path0 b/path0
 old mode 100644

t/t4006-diff-mode.sh

      tree=`git-write-tree` &&
      echo $tree'
 
-test_expect_success \
-    'chmod' \
-    'chmod +x rezrov &&
-     git-update-index rezrov &&
-     git-diff-index $tree >current'
+if [ "$(git repo-config --get core.filemode)" = false ]
+then
+	say 'filemode disabled on the filesystem, using update-index --chmod=+x'
+	test_expect_success \
+	    'git-update-index --chmod=+x' \
+	    'git-update-index rezrov &&
+	     git-update-index --chmod=+x rezrov &&
+	     git-diff-index $tree >current'
+else
+	test_expect_success \
+	    'chmod' \
+	    'chmod +x rezrov &&
+	     git-update-index rezrov &&
+	     git-diff-index $tree >current'
+fi
 
 _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
 _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"

t/t4102-apply-rename.sh

 test_expect_success apply \
     'git-apply --index --stat --summary --apply test-patch'
 
-test_expect_success validate \
-    'test -f bar && ls -l bar | grep "^-..x......"'
+if [ "$(git repo-config --get core.filemode)" = false ]
+then
+	say 'filemode disabled on the filesystem'
+else
+	test_expect_success validate \
+	    'test -f bar && ls -l bar | grep "^-..x......"'
+fi
 
 test_done

t/t6001-rev-list-merge-order.sh

 . ./test-lib.sh
 . ../t6000lib.sh # t6xxx specific functions
 
-if git-rev-list --merge-order 2>&1 | grep 'OpenSSL not linked' >/dev/null
-then
-    test_expect_success 'skipping merge-order test' :
-    test_done
-    exit
-fi    
-
 # test-case specific test function
 check_adjacency()
 {
 19
 EOF
 
+if git-rev-list --merge-order HEAD 2>&1 | grep 'OpenSSL not linked' >/dev/null
+then
+    test_expect_success 'skipping merge-order test' :
+    test_done
+    exit
+fi
+
 normal_adjacency_count=$(git-rev-list HEAD | check_adjacency | grep -c "\^" | tr -d ' ')
 merge_order_adjacency_count=$(git-rev-list --merge-order HEAD | check_adjacency | grep -c "\^" | tr -d ' ')
 test_expect_success '--merge-order produces as many or fewer discontinuities' '[ $merge_order_adjacency_count -le $normal_adjacency_count ]'
 test=trash
 rm -fr "$test"
 mkdir "$test"
-cd "$test"
+cd "$test" || error "Cannot setup test environment"
 "$GIT_EXEC_PATH/git" init-db --template=../../templates/blt/ 2>/dev/null ||
 error "cannot run git init-db -- have you built things yet?"
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.