diff options
53 files changed, 87 insertions, 600 deletions
| diff --git a/compat/vcbuild/scripts/clink.pl b/compat/vcbuild/scripts/clink.pl index 4374771df2..4374771df2 100644..100755 --- a/compat/vcbuild/scripts/clink.pl +++ b/compat/vcbuild/scripts/clink.pl diff --git a/compat/vcbuild/scripts/lib.pl b/compat/vcbuild/scripts/lib.pl index d8054e469f..d8054e469f 100644..100755 --- a/compat/vcbuild/scripts/lib.pl +++ b/compat/vcbuild/scripts/lib.pl diff --git a/contrib/buildsystems/engine.pl b/contrib/buildsystems/engine.pl index 23da787dc5..23da787dc5 100644..100755 --- a/contrib/buildsystems/engine.pl +++ b/contrib/buildsystems/engine.pl diff --git a/contrib/buildsystems/generate b/contrib/buildsystems/generate index bc10f25ff2..bc10f25ff2 100644..100755 --- a/contrib/buildsystems/generate +++ b/contrib/buildsystems/generate diff --git a/contrib/buildsystems/parse.pl b/contrib/buildsystems/parse.pl index c9656ece99..c9656ece99 100644..100755 --- a/contrib/buildsystems/parse.pl +++ b/contrib/buildsystems/parse.pl diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 874611db56..51c2dd4dec 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1,5 +1,3 @@ -#!bash -#  # bash/zsh completion support for core Git.  #  # Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org> diff --git a/contrib/completion/git-completion.tcsh b/contrib/completion/git-completion.tcsh index eaacaf0c3e..6104a42a23 100644 --- a/contrib/completion/git-completion.tcsh +++ b/contrib/completion/git-completion.tcsh @@ -1,5 +1,3 @@ -#!tcsh -#  # tcsh completion support for core Git.  #  # Copyright (C) 2012 Marc Khouzam <marc.khouzam@gmail.com> diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email index 8ee410f843..8747b84334 100755 --- a/contrib/hooks/post-receive-email +++ b/contrib/hooks/post-receive-email @@ -22,7 +22,6 @@  # For example, on debian the hook is stored in  # /usr/share/git-core/contrib/hooks/post-receive-email:  # -#  chmod a+x post-receive-email  #  cd /path/to/your/repository.git  #  ln -sf /usr/share/git-core/contrib/hooks/post-receive-email hooks/post-receive  # diff --git a/contrib/hooks/pre-auto-gc-battery b/contrib/hooks/pre-auto-gc-battery index 1f914c94aa..9d0c2d1990 100644..100755 --- a/contrib/hooks/pre-auto-gc-battery +++ b/contrib/hooks/pre-auto-gc-battery @@ -13,7 +13,6 @@  # For example, if the hook is stored in  # /usr/share/git-core/contrib/hooks/pre-auto-gc-battery:  # -# chmod a+x pre-auto-gc-battery  # cd /path/to/your/repository.git  # ln -sf /usr/share/git-core/contrib/hooks/pre-auto-gc-battery \  #	hooks/pre-auto-gc diff --git a/contrib/hooks/setgitperms.perl b/contrib/hooks/setgitperms.perl index 2770a1b1d2..2770a1b1d2 100644..100755 --- a/contrib/hooks/setgitperms.perl +++ b/contrib/hooks/setgitperms.perl diff --git a/contrib/hooks/update-paranoid b/contrib/hooks/update-paranoid index d18b317b2f..d18b317b2f 100644..100755 --- a/contrib/hooks/update-paranoid +++ b/contrib/hooks/update-paranoid diff --git a/contrib/p4import/README b/contrib/p4import/README deleted file mode 100644 index b9892b6793..0000000000 --- a/contrib/p4import/README +++ /dev/null @@ -1 +0,0 @@ -Please see contrib/fast-import/git-p4 for a better Perforce importer. diff --git a/contrib/p4import/git-p4import.py b/contrib/p4import/git-p4import.py deleted file mode 100644 index 593d6a0682..0000000000 --- a/contrib/p4import/git-p4import.py +++ /dev/null @@ -1,365 +0,0 @@ -#!/usr/bin/env python -# -# This tool is copyright (c) 2006, Sean Estabrooks. -# It is released under the Gnu Public License, version 2. -# -# Import Perforce branches into Git repositories. -# Checking out the files is done by calling the standard p4 -# client which you must have properly configured yourself -# - -import marshal -import os -import sys -import time -import getopt - -if sys.hexversion < 0x02020000: -   # The behavior of the marshal module changed significantly in 2.2 -   sys.stderr.write("git-p4import.py: requires Python 2.2 or later.\n") -   sys.exit(1) - -from signal import signal, \ -   SIGPIPE, SIGINT, SIG_DFL, \ -   default_int_handler - -signal(SIGPIPE, SIG_DFL) -s = signal(SIGINT, SIG_DFL) -if s != default_int_handler: -   signal(SIGINT, s) - -def die(msg, *args): -    for a in args: -        msg = "%s %s" % (msg, a) -    print "git-p4import fatal error:", msg -    sys.exit(1) - -def usage(): -    print "USAGE: git-p4import [-q|-v]  [--authors=<file>]  [-t <timezone>]  [//p4repo/path <branch>]" -    sys.exit(1) - -verbosity = 1 -logfile = "/dev/null" -ignore_warnings = False -stitch = 0 -tagall = True - -def report(level, msg, *args): -    global verbosity -    global logfile -    for a in args: -        msg = "%s %s" % (msg, a) -    fd = open(logfile, "a") -    fd.writelines(msg) -    fd.close() -    if level <= verbosity: -        print msg - -class p4_command: -    def __init__(self, _repopath): -        try: -            global logfile -            self.userlist = {} -            if _repopath[-1] == '/': -                self.repopath = _repopath[:-1] -            else: -                self.repopath = _repopath -            if self.repopath[-4:] != "/...": -                self.repopath= "%s/..." % self.repopath -            f=os.popen('p4 -V 2>>%s'%logfile, 'rb') -            a = f.readlines() -            if f.close(): -                raise -        except: -                die("Could not find the \"p4\" command") - -    def p4(self, cmd, *args): -        global logfile -        cmd = "%s %s" % (cmd, ' '.join(args)) -        report(2, "P4:", cmd) -        f=os.popen('p4 -G %s 2>>%s' % (cmd,logfile), 'rb') -        list = [] -        while 1: -           try: -                list.append(marshal.load(f)) -           except EOFError: -                break -        self.ret = f.close() -        return list - -    def sync(self, id, force=False, trick=False, test=False): -        if force: -            ret = self.p4("sync -f %s@%s"%(self.repopath, id))[0] -        elif trick: -            ret = self.p4("sync -k %s@%s"%(self.repopath, id))[0] -        elif test: -            ret = self.p4("sync -n %s@%s"%(self.repopath, id))[0] -        else: -            ret = self.p4("sync    %s@%s"%(self.repopath, id))[0] -        if ret['code'] == "error": -             data = ret['data'].upper() -             if data.find('VIEW') > 0: -                 die("Perforce reports %s is not in client view"% self.repopath) -             elif data.find('UP-TO-DATE') < 0: -                 die("Could not sync files from perforce", self.repopath) - -    def changes(self, since=0): -        try: -            list = [] -            for rec in self.p4("changes %s@%s,#head" % (self.repopath, since+1)): -                list.append(rec['change']) -            list.reverse() -            return list -        except: -            return [] - -    def authors(self, filename): -        f=open(filename) -        for l in f.readlines(): -            self.userlist[l[:l.find('=')].rstrip()] = \ -                    (l[l.find('=')+1:l.find('<')].rstrip(),l[l.find('<')+1:l.find('>')]) -        f.close() -        for f,e in self.userlist.items(): -                report(2, f, ":", e[0], "  <", e[1], ">") - -    def _get_user(self, id): -        if not self.userlist.has_key(id): -            try: -                user = self.p4("users", id)[0] -                self.userlist[id] = (user['FullName'], user['Email']) -            except: -                self.userlist[id] = (id, "") -        return self.userlist[id] - -    def _format_date(self, ticks): -        symbol='+' -        name = time.tzname[0] -        offset = time.timezone -        if ticks[8]: -            name = time.tzname[1] -            offset = time.altzone -        if offset < 0: -            offset *= -1 -            symbol = '-' -        localo = "%s%02d%02d %s" % (symbol, offset / 3600, offset % 3600, name) -        tickso = time.strftime("%a %b %d %H:%M:%S %Y", ticks) -        return "%s %s" % (tickso, localo) - -    def where(self): -        try: -            return self.p4("where %s" % self.repopath)[-1]['path'] -        except: -            return "" - -    def describe(self, num): -        desc = self.p4("describe -s", num)[0] -        self.msg = desc['desc'] -        self.author, self.email = self._get_user(desc['user']) -        self.date = self._format_date(time.localtime(long(desc['time']))) -        return self - -class git_command: -    def __init__(self): -        try: -            self.version = self.git("--version")[0][12:].rstrip() -        except: -            die("Could not find the \"git\" command") -        try: -            self.gitdir = self.get_single("rev-parse --git-dir") -            report(2, "gdir:", self.gitdir) -        except: -            die("Not a git repository... did you forget to \"git init\" ?") -        try: -            self.cdup = self.get_single("rev-parse --show-cdup") -            if self.cdup != "": -                os.chdir(self.cdup) -            self.topdir = os.getcwd() -            report(2, "topdir:", self.topdir) -        except: -            die("Could not find top git directory") - -    def git(self, cmd): -        global logfile -        report(2, "GIT:", cmd) -        f=os.popen('git %s 2>>%s' % (cmd,logfile), 'rb') -        r=f.readlines() -        self.ret = f.close() -        return r - -    def get_single(self, cmd): -        return self.git(cmd)[0].rstrip() - -    def current_branch(self): -        try: -            testit = self.git("rev-parse --verify HEAD")[0] -            return self.git("symbolic-ref HEAD")[0][11:].rstrip() -        except: -            return None - -    def get_config(self, variable): -        try: -            return self.git("config --get %s" % variable)[0].rstrip() -        except: -            return None - -    def set_config(self, variable, value): -        try: -            self.git("config %s %s"%(variable, value) ) -        except: -            die("Could not set %s to " % variable, value) - -    def make_tag(self, name, head): -        self.git("tag -f %s %s"%(name,head)) - -    def top_change(self, branch): -        try: -            a=self.get_single("name-rev --tags refs/heads/%s" % branch) -            loc = a.find(' tags/') + 6 -            if a[loc:loc+3] != "p4/": -                raise -            return int(a[loc+3:][:-2]) -        except: -            return 0 - -    def update_index(self): -        self.git("ls-files -m -d -o -z | git update-index --add --remove -z --stdin") - -    def checkout(self, branch): -        self.git("checkout %s" % branch) - -    def repoint_head(self, branch): -        self.git("symbolic-ref HEAD refs/heads/%s" % branch) - -    def remove_files(self): -        self.git("ls-files | xargs rm") - -    def clean_directories(self): -        self.git("clean -d") - -    def fresh_branch(self, branch): -        report(1, "Creating new branch", branch) -        self.git("ls-files | xargs rm") -        os.remove(".git/index") -        self.repoint_head(branch) -        self.git("clean -d") - -    def basedir(self): -        return self.topdir - -    def commit(self, author, email, date, msg, id): -        self.update_index() -        fd=open(".msg", "w") -        fd.writelines(msg) -        fd.close() -        try: -                current = self.get_single("rev-parse --verify HEAD") -                head = "-p HEAD" -        except: -                current = "" -                head = "" -        tree = self.get_single("write-tree") -        for r,l in [('DATE',date),('NAME',author),('EMAIL',email)]: -            os.environ['GIT_AUTHOR_%s'%r] = l -            os.environ['GIT_COMMITTER_%s'%r] = l -        commit = self.get_single("commit-tree %s %s < .msg" % (tree,head)) -        os.remove(".msg") -        self.make_tag("p4/%s"%id, commit) -        self.git("update-ref HEAD %s %s" % (commit, current) ) - -try: -    opts, args = getopt.getopt(sys.argv[1:], "qhvt:", -            ["authors=","help","stitch=","timezone=","log=","ignore","notags"]) -except getopt.GetoptError: -    usage() - -for o, a in opts: -    if o == "-q": -        verbosity = 0 -    if o == "-v": -        verbosity += 1 -    if o in ("--log"): -        logfile = a -    if o in ("--notags"): -        tagall = False -    if o in ("-h", "--help"): -        usage() -    if o in ("--ignore"): -        ignore_warnings = True - -git = git_command() -branch=git.current_branch() - -for o, a in opts: -    if o in ("-t", "--timezone"): -        git.set_config("perforce.timezone", a) -    if o in ("--stitch"): -        git.set_config("perforce.%s.path" % branch, a) -        stitch = 1 - -if len(args) == 2: -    branch = args[1] -    git.checkout(branch) -    if branch == git.current_branch(): -        die("Branch %s already exists!" % branch) -    report(1, "Setting perforce to ", args[0]) -    git.set_config("perforce.%s.path" % branch, args[0]) -elif len(args) != 0: -    die("You must specify the perforce //depot/path and git branch") - -p4path = git.get_config("perforce.%s.path" % branch) -if p4path == None: -    die("Do not know Perforce //depot/path for git branch", branch) - -p4 = p4_command(p4path) - -for o, a in opts: -    if o in ("-a", "--authors"): -        p4.authors(a) - -localdir = git.basedir() -if p4.where()[:len(localdir)] != localdir: -    report(1, "**WARNING** Appears p4 client is misconfigured") -    report(1, "   for sync from %s to %s" % (p4.repopath, localdir)) -    if ignore_warnings != True: -        die("Reconfigure or use \"--ignore\" on command line") - -if stitch == 0: -    top = git.top_change(branch) -else: -    top = 0 -changes = p4.changes(top) -count = len(changes) -if count == 0: -    report(1, "Already up to date...") -    sys.exit(0) - -ptz = git.get_config("perforce.timezone") -if ptz: -    report(1, "Setting timezone to", ptz) -    os.environ['TZ'] = ptz -    time.tzset() - -if stitch == 1: -    git.remove_files() -    git.clean_directories() -    p4.sync(changes[0], force=True) -elif top == 0 and branch != git.current_branch(): -    p4.sync(changes[0], test=True) -    report(1, "Creating new initial commit"); -    git.fresh_branch(branch) -    p4.sync(changes[0], force=True) -else: -    p4.sync(changes[0], trick=True) - -report(1, "processing %s changes from p4 (%s) to git (%s)" % (count, p4.repopath, branch)) -for id in changes: -    report(1, "Importing changeset", id) -    change = p4.describe(id) -    p4.sync(id) -    if tagall : -            git.commit(change.author, change.email, change.date, change.msg, id) -    else: -            git.commit(change.author, change.email, change.date, change.msg, "import") -    if stitch == 1: -        git.clean_directories() -        stitch = 0 diff --git a/contrib/p4import/git-p4import.txt b/contrib/p4import/git-p4import.txt deleted file mode 100644 index 9967587fe6..0000000000 --- a/contrib/p4import/git-p4import.txt +++ /dev/null @@ -1,167 +0,0 @@ -git-p4import(1) -=============== - -NAME ----- -git-p4import - Import a Perforce repository into git - - -SYNOPSIS --------- -[verse] -`git-p4import` [-q|-v] [--notags] [--authors <file>] [-t <timezone>] -               <//p4repo/path> <branch> -`git-p4import` --stitch <//p4repo/path> -`git-p4import` - - -DESCRIPTION ------------ -Import a Perforce repository into an existing git repository.  When -a <//p4repo/path> and <branch> are specified a new branch with the -given name will be created and the initial import will begin. - -Once the initial import is complete you can do an incremental import -of new commits from the Perforce repository.  You do this by checking -out the appropriate git branch and then running `git-p4import` without -any options. - -The standard p4 client is used to communicate with the Perforce -repository; it must be configured correctly in order for `git-p4import` -to operate (see below). - - -OPTIONS -------- --q:: -	Do not display any progress information. - --v:: -        Give extra progress information. - -\--authors:: -	Specify an authors file containing a mapping of Perforce user -	ids to full names and email addresses (see Notes below). - -\--notags:: -	Do not create a tag for each imported commit. - -\--stitch:: -	Import the contents of the given perforce branch into the -	currently checked out git branch. - -\--log:: -	Store debugging information in the specified file. - --t:: -	Specify that the remote repository is in the specified timezone. -	Timezone must be in the format "US/Pacific" or "Europe/London" -	etc.  You only need to specify this once, it will be saved in -	the git config file for the repository. - -<//p4repo/path>:: -	The Perforce path that will be imported into the specified branch. - -<branch>:: -	The new branch that will be created to hold the Perforce imports. - - -P4 Client ---------- -You must make the `p4` client command available in your $PATH and -configure it to communicate with the target Perforce repository. -Typically this means you must set the "$P4PORT" and "$P4CLIENT" -environment variables. - -You must also configure a `p4` client "view" which maps the Perforce -branch into the top level of your git repository, for example: - ------------- -Client: myhost - -Root:   /home/sean/import - -Options:   noallwrite clobber nocompress unlocked modtime rmdir - -View: -        //public/jam/... //myhost/jam/... ------------- - -With the above `p4` client setup, you could import the "jam" -perforce branch into a branch named "jammy", like so: - ------------- -$ mkdir -p /home/sean/import/jam -$ cd /home/sean/import/jam -$ git init -$ git p4import //public/jam jammy ------------- - - -Multiple Branches ------------------ -Note that by creating multiple "views" you can use `git-p4import` -to import additional branches into the same git repository. -However, the `p4` client has a limitation in that it silently -ignores all but the last "view" that maps into the same local -directory.  So the following will *not* work: - ------------- -View: -        //public/jam/... //myhost/jam/... -        //public/other/... //myhost/jam/... -        //public/guest/... //myhost/jam/... ------------- - -If you want more than one Perforce branch to be imported into the -same directory you must employ a workaround.  A simple option is -to adjust your `p4` client before each import to only include a -single view. - -Another option is to create multiple symlinks locally which all -point to the same directory in your git repository and then use -one per "view" instead of listing the actual directory. - - -Tags ----- -A git tag of the form p4/xx is created for every change imported from -the Perforce repository where xx is the Perforce changeset number. -Therefore after the import you can use git to access any commit by its -Perforce number, e.g. git show p4/327. - -The tag associated with the HEAD commit is also how `git-p4import` -determines if there are new changes to incrementally import from the -Perforce repository. - -If you import from a repository with many thousands of changes -you will have an equal number of p4/xxxx git tags.  Git tags can -be expensive in terms of disk space and repository operations. -If you don't need to perform further incremental imports, you -may delete the tags. - - -Notes ------ -You can interrupt the import (e.g. ctrl-c) at any time and restart it -without worry. - -Author information is automatically determined by querying the -Perforce "users" table using the id associated with each change. -However, if you want to manually supply these mappings you can do -so with the "--authors" option.  It accepts a file containing a list -of mappings with each line containing one mapping in the format: - ------------- -    perforce_id = Full Name <email@address.com> ------------- - - -Author ------- -Written by Sean Estabrooks <seanlkml@sympatico.ca> - - -GIT ---- -Part of the gitlink:git[7] suite diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh index a280f49817..c45a020301 100644 --- a/git-mergetool--lib.sh +++ b/git-mergetool--lib.sh @@ -1,5 +1,4 @@ -#!/bin/sh -# git-mergetool--lib is a library for common merge tool functions +# git-mergetool--lib is a shell library for common merge tool functions  : ${MERGE_TOOLS_DIR=$(git --exec-path)/mergetools} diff --git a/git-parse-remote.sh b/git-parse-remote.sh index 0e87e0915e..55fe8d56c9 100644 --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -1,4 +1,6 @@ -#!/bin/sh +# This is a shell library to calculate the remote repository and +# upstream branch that should be pulled by "git pull" from the current +# branch.  # git-ls-remote could be called from outside a git managed repository;  # this would fail in that case and would issue an error message. diff --git a/git-rebase--am.sh b/git-rebase--am.sh index 34e3102fcb..a4f683a5d7 100644 --- a/git-rebase--am.sh +++ b/git-rebase--am.sh @@ -1,4 +1,5 @@ -#!/bin/sh +# This shell script fragment is sourced by git-rebase to implement +# its default, fast, patch-based, non-interactive mode.  #  # Copyright (c) 2010 Junio C Hamano.  # diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 3c6bed9a28..43c19e0829 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -1,11 +1,8 @@ -#!/bin/sh +# This shell script fragment is sourced by git-rebase to implement +# its interactive mode.  "git rebase --interactive" makes it easy +# to fix up commits in the middle of a series and rearrange commits.  #  # Copyright (c) 2006 Johannes E. Schindelin - -# SHORT DESCRIPTION -# -# This script makes it easy to fix up commits in the middle of a series, -# and rearrange commits.  #  # The original idea comes from Eric W. Biederman, in  # http://article.gmane.org/gmane.comp.version-control.git/22407 diff --git a/git-rebase--merge.sh b/git-rebase--merge.sh index 16d18176ec..e7d96de9ad 100644 --- a/git-rebase--merge.sh +++ b/git-rebase--merge.sh @@ -1,4 +1,6 @@ -#!/bin/sh +# This shell script fragment is sourced by git-rebase to implement +# its merge-based non-interactive mode that copes well with renamed +# files.  #  # Copyright (c) 2010 Junio C Hamano.  # diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh index 6a27f68136..e6c3116e18 100644 --- a/git-sh-i18n.sh +++ b/git-sh-i18n.sh @@ -1,9 +1,8 @@ -#!/bin/sh +# This shell library is Git's interface to gettext.sh. See po/README +# for usage instructions.  #  # Copyright (c) 2010 Ævar Arnfjörð Bjarmason  # -# This is Git's interface to gettext.sh. See po/README for usage -# instructions.  # Export the TEXTDOMAIN* data that we need for Git  TEXTDOMAIN=git diff --git a/git-sh-setup.sh b/git-sh-setup.sh index ebfe8f7a4d..190a5394b9 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -1,9 +1,6 @@ -#!/bin/sh -# -# This is included in commands that either have to be run from the toplevel -# of the repository, or with GIT_DIR environment variable properly. -# If the GIT_DIR does not look like the right correct git-repository, -# it dies. +# This shell scriplet is meant to be included by other shell scripts +# to set up some variables pointing at the normal git directories and +# a few helper shell functions.  # Having this variable in your environment would break scripts because  # you would cause "cd" to be taken to unexpected places.  If you diff --git a/t/Git-SVN/00compile.t b/t/Git-SVN/00compile.t index c92fee453f..c92fee453f 100644..100755 --- a/t/Git-SVN/00compile.t +++ b/t/Git-SVN/00compile.t diff --git a/t/Git-SVN/Utils/add_path_to_url.t b/t/Git-SVN/Utils/add_path_to_url.t index bfbd87845f..bfbd87845f 100644..100755 --- a/t/Git-SVN/Utils/add_path_to_url.t +++ b/t/Git-SVN/Utils/add_path_to_url.t diff --git a/t/Git-SVN/Utils/can_compress.t b/t/Git-SVN/Utils/can_compress.t index d7b49b8d54..d7b49b8d54 100644..100755 --- a/t/Git-SVN/Utils/can_compress.t +++ b/t/Git-SVN/Utils/can_compress.t diff --git a/t/Git-SVN/Utils/canonicalize_url.t b/t/Git-SVN/Utils/canonicalize_url.t index 05795ab636..05795ab636 100644..100755 --- a/t/Git-SVN/Utils/canonicalize_url.t +++ b/t/Git-SVN/Utils/canonicalize_url.t diff --git a/t/Git-SVN/Utils/collapse_dotdot.t b/t/Git-SVN/Utils/collapse_dotdot.t index 1da1cce156..1da1cce156 100644..100755 --- a/t/Git-SVN/Utils/collapse_dotdot.t +++ b/t/Git-SVN/Utils/collapse_dotdot.t diff --git a/t/Git-SVN/Utils/fatal.t b/t/Git-SVN/Utils/fatal.t index 49e1438295..49e1438295 100644..100755 --- a/t/Git-SVN/Utils/fatal.t +++ b/t/Git-SVN/Utils/fatal.t diff --git a/t/Git-SVN/Utils/join_paths.t b/t/Git-SVN/Utils/join_paths.t index d4488e7162..d4488e7162 100644..100755 --- a/t/Git-SVN/Utils/join_paths.t +++ b/t/Git-SVN/Utils/join_paths.t diff --git a/t/gitweb-lib.sh b/t/gitweb-lib.sh index 8cf909a6c5..d5dab5a94f 100644 --- a/t/gitweb-lib.sh +++ b/t/gitweb-lib.sh @@ -1,4 +1,5 @@ -#!/bin/sh +# Initialization and helpers for Gitweb tests, which source this +# shell library instead of test-lib.sh.  #  # Copyright (c) 2007 Jakub Narebski  # diff --git a/t/lib-bash.sh b/t/lib-bash.sh index 11397f747b..2be955fafb 100644 --- a/t/lib-bash.sh +++ b/t/lib-bash.sh @@ -1,7 +1,6 @@ -#!/bin/sh -# -# Ensures that tests are run under Bash; primarily intended for running tests -# of the completion script. +# Shell library sourced instead of ./test-lib.sh by tests that need +# to run under Bash; primarily intended for tests of the completion +# script.  if test -n "$BASH" && test -z "$POSIXLY_CORRECT"; then  	# we are in full-on bash mode diff --git a/t/lib-cvs.sh b/t/lib-cvs.sh index 44263ade25..5076718916 100644 --- a/t/lib-cvs.sh +++ b/t/lib-cvs.sh @@ -1,4 +1,4 @@ -#!/bin/sh +# Shell library sourced instead of ./test-lib.sh by cvsimport tests.  . ./test-lib.sh diff --git a/t/lib-diff-alternative.sh b/t/lib-diff-alternative.sh index 75ffd9174f..8b4dbf22d2 100644 --- a/t/lib-diff-alternative.sh +++ b/t/lib-diff-alternative.sh @@ -1,4 +1,5 @@ -#!/bin/sh +# Helpers shared by the test scripts for diff algorithms (patience, +# histogram, etc).  test_diff_frobnitz() {  	cat >file1 <<\EOF diff --git a/t/lib-gettext.sh b/t/lib-gettext.sh index ae8883a075..eec757f104 100644 --- a/t/lib-gettext.sh +++ b/t/lib-gettext.sh @@ -1,4 +1,5 @@ -#!/bin/sh +# Initialization and Icelandic locale for basic git i18n tests, +# which source this scriptlet instead of ./test-lib.sh.  #  # Copyright (c) 2010 Ævar Arnfjörð Bjarmason  # diff --git a/t/lib-git-daemon.sh b/t/lib-git-daemon.sh index 87f0ad8f41..394b06b32f 100644 --- a/t/lib-git-daemon.sh +++ b/t/lib-git-daemon.sh @@ -1,4 +1,20 @@ -#!/bin/sh +# Shell library to run git-daemon in tests.  Ends the test early if +# GIT_TEST_GIT_DAEMON is not set. +# +# Usage: +# +#	. ./test-lib.sh +#	. "$TEST_DIRECTORY"/lib-git-daemon.sh +#	start_git_daemon +# +#	test_expect_success '...' ' +#		... +#	' +# +#	test_expect_success ... +# +#	stop_git_daemon +#	test_done  if test -z "$GIT_TEST_GIT_DAEMON"  then diff --git a/t/lib-httpd.sh b/t/lib-httpd.sh index ad8f1ef71e..c4707843c4 100644 --- a/t/lib-httpd.sh +++ b/t/lib-httpd.sh @@ -1,4 +1,31 @@ -#!/bin/sh +# Shell library to run an HTTP server for use in tests. +# Ends the test early if httpd tests should not be run, +# for example because the user has not enabled them. +# +# Usage: +# +#	. ./test-lib.sh +#	. "$TEST_DIRECTORY"/lib-httpd.sh +#	start_httpd +# +#	test_expect_success '...' ' +#		... +#	' +# +#	test_expect_success ... +# +#	stop_httpd +#	test_done +# +# Can be configured using the following variables. +# +#    GIT_TEST_HTTPD              enable HTTPD tests +#    LIB_HTTPD_PATH              web server path +#    LIB_HTTPD_MODULE_PATH       web server modules path +#    LIB_HTTPD_PORT              listening port +#    LIB_HTTPD_DAV               enable DAV +#    LIB_HTTPD_SVN               enable SVN +#    LIB_HTTPD_SSL               enable SSL  #  # Copyright (c) 2008 Clemens Buchacher <drizzd@aon.at>  # diff --git a/t/lib-pack.sh b/t/lib-pack.sh index b96e1254dd..7509846571 100644 --- a/t/lib-pack.sh +++ b/t/lib-pack.sh @@ -1,5 +1,3 @@ -#!/bin/sh -#  # Support routines for hand-crafting weird or malicious packs.  #  # You can make a complete pack like: diff --git a/t/lib-pager.sh b/t/lib-pager.sh index ba03eab14f..3aa7a3ffd8 100644 --- a/t/lib-pager.sh +++ b/t/lib-pager.sh @@ -1,4 +1,4 @@ -#!/bin/sh +# Helpers for tests of git's choice of pager.  test_expect_success 'determine default pager' '  	test_might_fail git config --unset core.pager && diff --git a/t/lib-prereq-FILEMODE.sh b/t/lib-prereq-FILEMODE.sh deleted file mode 100644 index bce5a4c8bd..0000000000 --- a/t/lib-prereq-FILEMODE.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2010 Ævar Arnfjörð Bjarmason -# - -if test "$(git config --bool core.filemode)" = false -then -	say 'filemode disabled on the filesystem' -else -	test_set_prereq FILEMODE -fi diff --git a/t/lib-read-tree.sh b/t/lib-read-tree.sh index ef079afc46..b95f485606 100644 --- a/t/lib-read-tree.sh +++ b/t/lib-read-tree.sh @@ -1,5 +1,3 @@ -#!/bin/sh -#  # Helper functions to check if read-tree would succeed/fail as expected with  # and without the dry-run option. They also test that the dry-run does not  # write the index and that together with -u it doesn't touch the work tree. diff --git a/t/lib-rebase.sh b/t/lib-rebase.sh index 8ff87fb3f9..6bd252212a 100644 --- a/t/lib-rebase.sh +++ b/t/lib-rebase.sh @@ -1,4 +1,4 @@ -#!/bin/sh +# Helper functions used by interactive rebase tests.  # After setting the fake editor with this function, you can  # diff --git a/t/lib-terminal.sh b/t/lib-terminal.sh index 737df289a1..9a2dca506a 100644 --- a/t/lib-terminal.sh +++ b/t/lib-terminal.sh @@ -1,4 +1,4 @@ -#!/bin/sh +# Helpers for terminal output tests.  test_expect_success PERL 'set up terminal for tests' '  	# Reading from the pty master seems to get stuck _sometimes_ diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh index f4eecaa171..a8c9574291 100644 --- a/t/perf/perf-lib.sh +++ b/t/perf/perf-lib.sh @@ -1,4 +1,6 @@ -#!/bin/sh +# Performance testing framework.  Each perf script starts much like +# a normal test script, except it sources this library instead of +# test-lib.sh.  See t/perf/README for documentation.  #  # Copyright (c) 2011 Thomas Rast  # diff --git a/t/t0202/test.pl b/t/t0202/test.pl index 2c10cb4693..2c10cb4693 100644..100755 --- a/t/t0202/test.pl +++ b/t/t0202/test.pl diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh index 9dc91d09d7..24ddd8a704 100755 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@ -2,7 +2,6 @@  test_description='add -i basic tests'  . ./test-lib.sh -. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh  if ! test_have_prereq PERL  then diff --git a/t/t4102-apply-rename.sh b/t/t4102-apply-rename.sh index e3ea3d5114..49e2d6c349 100755 --- a/t/t4102-apply-rename.sh +++ b/t/t4102-apply-rename.sh @@ -7,7 +7,6 @@ test_description='git apply handling copy/rename patch.  '  . ./test-lib.sh -. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh  # setup diff --git a/t/t4120-apply-popt.sh b/t/t4120-apply-popt.sh index c5fecdfed4..497b62868d 100755 --- a/t/t4120-apply-popt.sh +++ b/t/t4120-apply-popt.sh @@ -6,7 +6,6 @@  test_description='git apply -p handling.'  . ./test-lib.sh -. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh  test_expect_success setup '  	mkdir sub && diff --git a/t/t4129-apply-samemode.sh b/t/t4129-apply-samemode.sh index 0d36ebdc86..c268298eaf 100755 --- a/t/t4129-apply-samemode.sh +++ b/t/t4129-apply-samemode.sh @@ -3,7 +3,6 @@  test_description='applying patch with mode bits'  . ./test-lib.sh -. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh  test_expect_success setup '  	echo original >file && diff --git a/t/t6031-merge-recursive.sh b/t/t6031-merge-recursive.sh index 1cd649e245..a953f1b55c 100755 --- a/t/t6031-merge-recursive.sh +++ b/t/t6031-merge-recursive.sh @@ -2,7 +2,6 @@  test_description='merge-recursive: handle file mode'  . ./test-lib.sh -. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh  test_expect_success 'mode change in one branch: keep changed version' '  	: >file1 && diff --git a/t/t9150/make-svk-dump b/t/t9150/make-svk-dump index 2242f14ebe..2242f14ebe 100644..100755 --- a/t/t9150/make-svk-dump +++ b/t/t9150/make-svk-dump diff --git a/t/t9151/make-svnmerge-dump b/t/t9151/make-svnmerge-dump index e1e138cb1a..e1e138cb1a 100644..100755 --- a/t/t9151/make-svnmerge-dump +++ b/t/t9151/make-svnmerge-dump diff --git a/t/t9200-git-cvsexportcommit.sh b/t/t9200-git-cvsexportcommit.sh index 3fb3368903..812c9cd462 100755 --- a/t/t9200-git-cvsexportcommit.sh +++ b/t/t9200-git-cvsexportcommit.sh @@ -5,7 +5,6 @@  test_description='Test export of commits to CVS'  . ./test-lib.sh -. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh  if ! test_have_prereq PERL; then  	skip_all='skipping git cvsexportcommit tests, perl not available' diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 2f79146e6c..aeae3ca769 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -1,4 +1,5 @@ -#!/bin/sh +# Library of functions shared by all tests scripts, included by +# test-lib.sh.  #  # Copyright (c) 2005 Junio C Hamano  # diff --git a/t/test-lib.sh b/t/test-lib.sh index d303e6c943..1cf78d5b11 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -1,4 +1,4 @@ -#!/bin/sh +# Test framework for git.  See t/README for usage.  #  # Copyright (c) 2005 Junio C Hamano  # @@ -577,11 +577,9 @@ then  	make_valgrind_symlink () {  		# handle only executables, unless they are shell libraries that -		# need to be in the exec-path.  We will just use "#!" as a -		# guess for a shell-script, since we have no idea what the user -		# may have configured as the shell path. +		# need to be in the exec-path.  		test -x "$1" || -		test "#!" = "$(head -c 2 <"$1")" || +		test "# " = "$(head -c 2 <"$1")" ||  		return;  		base=$(basename "$1") @@ -834,6 +832,10 @@ test_lazy_prereq SYMLINKS '  	ln -s x y && test -h y  ' +test_lazy_prereq FILEMODE ' +	test "$(git config --bool core.filemode)" = true +' +  test_lazy_prereq CASE_INSENSITIVE_FS '  	echo good >CamelCase &&  	echo bad >camelcase && | 
