Merge branch 'maint'
* maint: git-svn: don't attempt to spawn pager if we don't want one Supplant the "while case ... break ;; esac" idiom User Manual: add a chapter for submodules user-manual: don't assume refs are stored under .git/refs Detect exec bit in more cases. Conjugate "search" correctly in the git-prune-packed man page. Move the paragraph specifying where the .idx and .pack files should be Documentation/git-lost-found.txt: drop unnecessarily duplicated name.
This commit is contained in:
commit
4f337e2466
@ -65,7 +65,7 @@ $ git rev-parse not-lost-anymore
|
|||||||
|
|
||||||
Author
|
Author
|
||||||
------
|
------
|
||||||
Written by Junio C Hamano 濱野 純 <junkio@cox.net>
|
Written by Junio C Hamano <gitster@pobox.com>
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
--------------
|
--------------
|
||||||
|
@ -25,16 +25,16 @@ is efficient to access. The packed archive format (.pack) is
|
|||||||
designed to be unpackable without having anything else, but for
|
designed to be unpackable without having anything else, but for
|
||||||
random access, accompanied with the pack index file (.idx).
|
random access, accompanied with the pack index file (.idx).
|
||||||
|
|
||||||
|
Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
|
||||||
|
any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
|
||||||
|
enables git to read from such an archive.
|
||||||
|
|
||||||
'git-unpack-objects' command can read the packed archive and
|
'git-unpack-objects' command can read the packed archive and
|
||||||
expand the objects contained in the pack into "one-file
|
expand the objects contained in the pack into "one-file
|
||||||
one-object" format; this is typically done by the smart-pull
|
one-object" format; this is typically done by the smart-pull
|
||||||
commands when a pack is created on-the-fly for efficient network
|
commands when a pack is created on-the-fly for efficient network
|
||||||
transport by their peers.
|
transport by their peers.
|
||||||
|
|
||||||
Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
|
|
||||||
any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
|
|
||||||
enables git to read from such an archive.
|
|
||||||
|
|
||||||
In a packed archive, an object is either stored as a compressed
|
In a packed archive, an object is either stored as a compressed
|
||||||
whole, or as a difference from some other object. The latter is
|
whole, or as a difference from some other object. The latter is
|
||||||
often called a delta.
|
often called a delta.
|
||||||
|
@ -13,7 +13,7 @@ SYNOPSIS
|
|||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
This program search the `$GIT_OBJECT_DIR` for all objects that currently
|
This program searches the `$GIT_OBJECT_DIR` for all objects that currently
|
||||||
exist in a pack file as well as the independent object directories.
|
exist in a pack file as well as the independent object directories.
|
||||||
|
|
||||||
All such extra objects are removed.
|
All such extra objects are removed.
|
||||||
|
@ -369,6 +369,11 @@ shorthand:
|
|||||||
The full name is occasionally useful if, for example, there ever
|
The full name is occasionally useful if, for example, there ever
|
||||||
exists a tag and a branch with the same name.
|
exists a tag and a branch with the same name.
|
||||||
|
|
||||||
|
(Newly created refs are actually stored in the .git/refs directory,
|
||||||
|
under the path given by their name. However, for efficiency reasons
|
||||||
|
they may also be packed together in a single file; see
|
||||||
|
gitlink:git-pack-refs[1]).
|
||||||
|
|
||||||
As another useful shortcut, the "HEAD" of a repository can be referred
|
As another useful shortcut, the "HEAD" of a repository can be referred
|
||||||
to just using the name of that repository. So, for example, "origin"
|
to just using the name of that repository. So, for example, "origin"
|
||||||
is usually a shortcut for the HEAD branch in the repository "origin".
|
is usually a shortcut for the HEAD branch in the repository "origin".
|
||||||
@ -2189,9 +2194,9 @@ test|release)
|
|||||||
git checkout $1 && git pull . origin
|
git checkout $1 && git pull . origin
|
||||||
;;
|
;;
|
||||||
origin)
|
origin)
|
||||||
before=$(cat .git/refs/remotes/origin/master)
|
before=$(git rev-parse refs/remotes/origin/master)
|
||||||
git fetch origin
|
git fetch origin
|
||||||
after=$(cat .git/refs/remotes/origin/master)
|
after=$(git rev-parse refs/remotes/origin/master)
|
||||||
if [ $before != $after ]
|
if [ $before != $after ]
|
||||||
then
|
then
|
||||||
git log $before..$after | git shortlog
|
git log $before..$after | git shortlog
|
||||||
@ -2216,11 +2221,10 @@ usage()
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ ! -f .git/refs/heads/"$1" ]
|
git show-ref -q --verify -- refs/heads/"$1" || {
|
||||||
then
|
|
||||||
echo "Can't see branch <$1>" 1>&2
|
echo "Can't see branch <$1>" 1>&2
|
||||||
usage
|
usage
|
||||||
fi
|
}
|
||||||
|
|
||||||
case "$2" in
|
case "$2" in
|
||||||
test|release)
|
test|release)
|
||||||
@ -2251,7 +2255,7 @@ then
|
|||||||
git log test..release
|
git log test..release
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for branch in `ls .git/refs/heads`
|
for branch in `git show-ref --heads | sed 's|^.*/||'`
|
||||||
do
|
do
|
||||||
if [ $branch = test -o $branch = release ]
|
if [ $branch = test -o $branch = release ]
|
||||||
then
|
then
|
||||||
@ -2946,7 +2950,7 @@ nLE/L9aUXdWeTFPron96DLA=
|
|||||||
See the gitlink:git-tag[1] command to learn how to create and verify tag
|
See the gitlink:git-tag[1] command to learn how to create and verify tag
|
||||||
objects. (Note that gitlink:git-tag[1] can also be used to create
|
objects. (Note that gitlink:git-tag[1] can also be used to create
|
||||||
"lightweight tags", which are not tag objects at all, but just simple
|
"lightweight tags", which are not tag objects at all, but just simple
|
||||||
references in .git/refs/tags/).
|
references whose names begin with "refs/tags/").
|
||||||
|
|
||||||
[[pack-files]]
|
[[pack-files]]
|
||||||
How git stores objects efficiently: pack files
|
How git stores objects efficiently: pack files
|
||||||
@ -3155,6 +3159,208 @@ a tree which you are in the process of working on.
|
|||||||
If you blow the index away entirely, you generally haven't lost any
|
If you blow the index away entirely, you generally haven't lost any
|
||||||
information as long as you have the name of the tree that it described.
|
information as long as you have the name of the tree that it described.
|
||||||
|
|
||||||
|
[[submodules]]
|
||||||
|
Submodules
|
||||||
|
==========
|
||||||
|
|
||||||
|
This tutorial explains how to create and publish a repository with submodules
|
||||||
|
using the gitlink:git-submodule[1] command.
|
||||||
|
|
||||||
|
Submodules maintain their own identity; the submodule support just stores the
|
||||||
|
submodule repository location and commit ID, so other developers who clone the
|
||||||
|
superproject can easily clone all the submodules at the same revision.
|
||||||
|
|
||||||
|
To see how submodule support works, create (for example) four example
|
||||||
|
repositories that can be used later as a submodule:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ mkdir ~/git
|
||||||
|
$ cd ~/git
|
||||||
|
$ for i in a b c d
|
||||||
|
do
|
||||||
|
mkdir $i
|
||||||
|
cd $i
|
||||||
|
git init
|
||||||
|
echo "module $i" > $i.txt
|
||||||
|
git add $i.txt
|
||||||
|
git commit -m "Initial commit, submodule $i"
|
||||||
|
cd ..
|
||||||
|
done
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
Now create the superproject and add all the submodules:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ mkdir super
|
||||||
|
$ cd super
|
||||||
|
$ git init
|
||||||
|
$ for i in a b c d
|
||||||
|
do
|
||||||
|
git submodule add ~/git/$i
|
||||||
|
done
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
NOTE: Do not use local URLs here if you plan to publish your superproject!
|
||||||
|
|
||||||
|
See what files `git submodule` created:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ ls -a
|
||||||
|
. .. .git .gitmodules a b c d
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
The `git submodule add` command does a couple of things:
|
||||||
|
|
||||||
|
- It clones the submodule under the current directory and by default checks out
|
||||||
|
the master branch.
|
||||||
|
- It adds the submodule's clone path to the `.gitmodules` file and adds this
|
||||||
|
file to the index, ready to be committed.
|
||||||
|
- It adds the submodule's current commit ID to the index, ready to be
|
||||||
|
committed.
|
||||||
|
|
||||||
|
Commit the superproject:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ git commit -m "Add submodules a, b, c and d."
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
Now clone the superproject:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ cd ..
|
||||||
|
$ git clone super cloned
|
||||||
|
$ cd cloned
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
The submodule directories are there, but they're empty:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ ls -a a
|
||||||
|
. ..
|
||||||
|
$ git submodule status
|
||||||
|
-d266b9873ad50488163457f025db7cdd9683d88b a
|
||||||
|
-e81d457da15309b4fef4249aba9b50187999670d b
|
||||||
|
-c1536a972b9affea0f16e0680ba87332dc059146 c
|
||||||
|
-d96249ff5d57de5de093e6baff9e0aafa5276a74 d
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
NOTE: The commit object names shown above would be different for you, but they
|
||||||
|
should match the HEAD commit object names of your repositories. You can check
|
||||||
|
it by running `git ls-remote ../a`.
|
||||||
|
|
||||||
|
Pulling down the submodules is a two-step process. First run `git submodule
|
||||||
|
init` to add the submodule repository URLs to `.git/config`:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ git submodule init
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
Now use `git submodule update` to clone the repositories and check out the
|
||||||
|
commits specified in the superproject:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ git submodule update
|
||||||
|
$ cd a
|
||||||
|
$ ls -a
|
||||||
|
. .. .git a.txt
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
One major difference between `git submodule update` and `git submodule add` is
|
||||||
|
that `git submodule update` checks out a specific commit, rather than the tip
|
||||||
|
of a branch. It's like checking out a tag: the head is detached, so you're not
|
||||||
|
working on a branch.
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ git branch
|
||||||
|
* (no branch)
|
||||||
|
master
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
If you want to make a change within a submodule and you have a detached head,
|
||||||
|
then you should create or checkout a branch, make your changes, publish the
|
||||||
|
change within the submodule, and then update the superproject to reference the
|
||||||
|
new commit:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ git checkout master
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ git checkout -b fix-up
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
then
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ echo "adding a line again" >> a.txt
|
||||||
|
$ git commit -a -m "Updated the submodule from within the superproject."
|
||||||
|
$ git push
|
||||||
|
$ cd ..
|
||||||
|
$ git diff
|
||||||
|
diff --git a/a b/a
|
||||||
|
index d266b98..261dfac 160000
|
||||||
|
--- a/a
|
||||||
|
+++ b/a
|
||||||
|
@@ -1 +1 @@
|
||||||
|
-Subproject commit d266b9873ad50488163457f025db7cdd9683d88b
|
||||||
|
+Subproject commit 261dfac35cb99d380eb966e102c1197139f7fa24
|
||||||
|
$ git add a
|
||||||
|
$ git commit -m "Updated submodule a."
|
||||||
|
$ git push
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
You have to run `git submodule update` after `git pull` if you want to update
|
||||||
|
submodules, too.
|
||||||
|
|
||||||
|
Pitfalls with submodules
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Always publish the submodule change before publishing the change to the
|
||||||
|
superproject that references it. If you forget to publish the submodule change,
|
||||||
|
others won't be able to clone the repository:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ cd ~/git/super/a
|
||||||
|
$ echo i added another line to this file >> a.txt
|
||||||
|
$ git commit -a -m "doing it wrong this time"
|
||||||
|
$ cd ..
|
||||||
|
$ git add a
|
||||||
|
$ git commit -m "Updated submodule a again."
|
||||||
|
$ git push
|
||||||
|
$ cd ~/git/cloned
|
||||||
|
$ git pull
|
||||||
|
$ git submodule update
|
||||||
|
error: pathspec '261dfac35cb99d380eb966e102c1197139f7fa24' did not match any file(s) known to git.
|
||||||
|
Did you forget to 'git add'?
|
||||||
|
Unable to checkout '261dfac35cb99d380eb966e102c1197139f7fa24' in submodule path 'a'
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
You also should not rewind branches in a submodule beyond commits that were
|
||||||
|
ever recorded in any superproject.
|
||||||
|
|
||||||
|
It's not safe to run `git submodule update` if you've made and committed
|
||||||
|
changes within a submodule without checking out a branch first. They will be
|
||||||
|
silently overwritten:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
$ cat a.txt
|
||||||
|
module a
|
||||||
|
$ echo line added from private2 >> a.txt
|
||||||
|
$ git commit -a -m "line added inside private2"
|
||||||
|
$ cd ..
|
||||||
|
$ git submodule update
|
||||||
|
Submodule path 'a': checked out 'd266b9873ad50488163457f025db7cdd9683d88b'
|
||||||
|
$ cd a
|
||||||
|
$ cat a.txt
|
||||||
|
module a
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
NOTE: The changes are still visible in the submodule's reflog.
|
||||||
|
|
||||||
|
This is not the case if you did not commit your changes.
|
||||||
|
|
||||||
[[low-level-operations]]
|
[[low-level-operations]]
|
||||||
Low-level git operations
|
Low-level git operations
|
||||||
========================
|
========================
|
||||||
|
@ -9,7 +9,7 @@ SUBDIRECTORY_OK=Yes
|
|||||||
. git-sh-setup
|
. git-sh-setup
|
||||||
|
|
||||||
no_prune=:
|
no_prune=:
|
||||||
while case $# in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--prune)
|
--prune)
|
||||||
|
@ -11,7 +11,7 @@ require_work_tree
|
|||||||
update= reset_type=--mixed
|
update= reset_type=--mixed
|
||||||
unset rev
|
unset rev
|
||||||
|
|
||||||
while case $# in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--mixed | --soft | --hard)
|
--mixed | --soft | --hard)
|
||||||
|
@ -14,7 +14,7 @@ username=
|
|||||||
list=
|
list=
|
||||||
verify=
|
verify=
|
||||||
LINES=0
|
LINES=0
|
||||||
while case "$#" in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-a)
|
-a)
|
||||||
|
@ -5,7 +5,7 @@ SUBDIRECTORY_OK='Yes'
|
|||||||
. git-sh-setup
|
. git-sh-setup
|
||||||
|
|
||||||
verbose=
|
verbose=
|
||||||
while case $# in 0) break;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
|
-v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
|
||||||
|
@ -63,6 +63,14 @@ def system(cmd):
|
|||||||
if os.system(cmd) != 0:
|
if os.system(cmd) != 0:
|
||||||
die("command failed: %s" % cmd)
|
die("command failed: %s" % cmd)
|
||||||
|
|
||||||
|
def isP4Exec(kind):
|
||||||
|
"""Determine if a Perforce 'kind' should have execute permission
|
||||||
|
|
||||||
|
'p4 help filetypes' gives a list of the types. If it starts with 'x',
|
||||||
|
or x follows one of a few letters. Otherwise, if there is an 'x' after
|
||||||
|
a plus sign, it is also executable"""
|
||||||
|
return (re.search(r"(^[cku]?x)|\+.*x", kind) != None)
|
||||||
|
|
||||||
def p4CmdList(cmd, stdin=None, stdin_mode='w+b'):
|
def p4CmdList(cmd, stdin=None, stdin_mode='w+b'):
|
||||||
cmd = "p4 -G %s" % cmd
|
cmd = "p4 -G %s" % cmd
|
||||||
if verbose:
|
if verbose:
|
||||||
@ -932,7 +940,7 @@ class P4Sync(Command):
|
|||||||
data = file['data']
|
data = file['data']
|
||||||
|
|
||||||
mode = "644"
|
mode = "644"
|
||||||
if file["type"].startswith("x"):
|
if isP4Exec(file["type"]):
|
||||||
mode = "755"
|
mode = "755"
|
||||||
elif file["type"] == "symlink":
|
elif file["type"] == "symlink":
|
||||||
mode = "120000"
|
mode = "120000"
|
||||||
|
@ -109,7 +109,7 @@ dotest=.dotest sign= utf8=t keep= skip= interactive= resolved= binary=
|
|||||||
resolvemsg= resume=
|
resolvemsg= resume=
|
||||||
git_apply_opt=
|
git_apply_opt=
|
||||||
|
|
||||||
while case "$#" in 0) break;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-d=*|--d=*|--do=*|--dot=*|--dote=*|--dotes=*|--dotest=*)
|
-d=*|--d=*|--do=*|--dot=*|--dote=*|--dotes=*|--dotest=*)
|
||||||
|
@ -26,7 +26,7 @@ rmrf="rm -rf --"
|
|||||||
rm_refuse="echo Not removing"
|
rm_refuse="echo Not removing"
|
||||||
echo1="echo"
|
echo1="echo"
|
||||||
|
|
||||||
while case "$#" in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-d)
|
-d)
|
||||||
|
@ -89,7 +89,7 @@ force_author=
|
|||||||
only_include_assumed=
|
only_include_assumed=
|
||||||
untracked_files=
|
untracked_files=
|
||||||
templatefile="`git config commit.template`"
|
templatefile="`git config commit.template`"
|
||||||
while case "$#" in 0) break;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-F|--F|-f|--f|--fi|--fil|--file)
|
-F|--F|-f|--f|--fi|--fil|--file)
|
||||||
|
@ -27,7 +27,7 @@ shallow_depth=
|
|||||||
no_progress=
|
no_progress=
|
||||||
test -t 1 || no_progress=--no-progress
|
test -t 1 || no_progress=--no-progress
|
||||||
quiet=
|
quiet=
|
||||||
while case "$#" in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-a|--a|--ap|--app|--appe|--appen|--append)
|
-a|--a|--ap|--app|--appe|--appen|--append)
|
||||||
|
@ -105,8 +105,9 @@ filter_tag_name=
|
|||||||
filter_subdir=
|
filter_subdir=
|
||||||
orig_namespace=refs/original/
|
orig_namespace=refs/original/
|
||||||
force=
|
force=
|
||||||
while case "$#" in 0) usage;; esac
|
while :
|
||||||
do
|
do
|
||||||
|
test $# = 0 && usage
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--)
|
--)
|
||||||
shift
|
shift
|
||||||
|
@ -61,7 +61,7 @@ stop_httpd () {
|
|||||||
test -f "$fqgitdir/pid" && kill `cat "$fqgitdir/pid"`
|
test -f "$fqgitdir/pid" && kill `cat "$fqgitdir/pid"`
|
||||||
}
|
}
|
||||||
|
|
||||||
while case "$#" in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--stop|stop)
|
--stop|stop)
|
||||||
|
@ -13,7 +13,7 @@ die () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
exec=
|
exec=
|
||||||
while case "$#" in 0) break;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-h|--h|--he|--hea|--head|--heads)
|
-h|--h|--he|--hea|--head|--heads)
|
||||||
|
@ -122,7 +122,7 @@ merge_name () {
|
|||||||
case "$#" in 0) usage ;; esac
|
case "$#" in 0) usage ;; esac
|
||||||
|
|
||||||
have_message=
|
have_message=
|
||||||
while case "$#" in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-n|--n|--no|--no-|--no-s|--no-su|--no-sum|--no-summ|\
|
-n|--n|--no|--no-|--no-s|--no-su|--no-sum|--no-summ|\
|
||||||
|
@ -268,7 +268,7 @@ merge_file () {
|
|||||||
cleanup_temp_files
|
cleanup_temp_files
|
||||||
}
|
}
|
||||||
|
|
||||||
while case $# in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-t|--tool*)
|
-t|--tool*)
|
||||||
|
@ -16,7 +16,7 @@ test -z "$(git ls-files -u)" ||
|
|||||||
die "You are in the middle of a conflicted merge."
|
die "You are in the middle of a conflicted merge."
|
||||||
|
|
||||||
strategy_args= no_summary= no_commit= squash=
|
strategy_args= no_summary= no_commit= squash=
|
||||||
while case "$#,$1" in 0) break ;; *,-*) ;; *) break ;; esac
|
while :
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-n|--n|--no|--no-|--no-s|--no-su|--no-sum|--no-summ|\
|
-n|--n|--no|--no-|--no-s|--no-su|--no-sum|--no-summ|\
|
||||||
@ -46,8 +46,8 @@ do
|
|||||||
-h|--h|--he|--hel|--help)
|
-h|--h|--he|--hel|--help)
|
||||||
usage
|
usage
|
||||||
;;
|
;;
|
||||||
-*)
|
*)
|
||||||
# Pass thru anything that is meant for fetch.
|
# Pass thru anything that may be meant for fetch.
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -5,7 +5,7 @@ SUBDIRECTORY_ON=Yes
|
|||||||
|
|
||||||
dry_run=""
|
dry_run=""
|
||||||
quilt_author=""
|
quilt_author=""
|
||||||
while case "$#" in 0) break;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--au=*|--aut=*|--auth=*|--autho=*|--author=*)
|
--au=*|--aut=*|--auth=*|--autho=*|--author=*)
|
||||||
|
@ -317,7 +317,7 @@ do_rest () {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
while case $# in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--continue)
|
--continue)
|
||||||
|
@ -122,15 +122,14 @@ finish_rb_merge () {
|
|||||||
|
|
||||||
is_interactive () {
|
is_interactive () {
|
||||||
test -f "$dotest"/interactive ||
|
test -f "$dotest"/interactive ||
|
||||||
while case $#,"$1" in 0,|*,-i|*,--interactive) break ;; esac
|
while :; do case $#,"$1" in 0,|*,-i|*,--interactive) break ;; esac
|
||||||
do
|
|
||||||
shift
|
shift
|
||||||
done && test -n "$1"
|
done && test -n "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
is_interactive "$@" && exec git-rebase--interactive "$@"
|
is_interactive "$@" && exec git-rebase--interactive "$@"
|
||||||
|
|
||||||
while case "$#" in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--continue)
|
--continue)
|
||||||
|
@ -9,7 +9,7 @@ SUBDIRECTORY_OK='Yes'
|
|||||||
|
|
||||||
no_update_info= all_into_one= remove_redundant=
|
no_update_info= all_into_one= remove_redundant=
|
||||||
local= quiet= no_reuse= extra=
|
local= quiet= no_reuse= extra=
|
||||||
while case "$#" in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-n) no_update_info=t ;;
|
-n) no_update_info=t ;;
|
||||||
|
@ -251,7 +251,7 @@ modules_list()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
while case "$#" in 0) break ;; esac
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
add)
|
add)
|
||||||
|
@ -3578,7 +3578,7 @@ sub config_pager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub run_pager {
|
sub run_pager {
|
||||||
return unless -t *STDOUT;
|
return unless -t *STDOUT && defined $pager;
|
||||||
pipe my $rfd, my $wfd or return;
|
pipe my $rfd, my $wfd or return;
|
||||||
defined(my $pid = fork) or ::fatal "Can't fork: $!\n";
|
defined(my $pid = fork) or ::fatal "Can't fork: $!\n";
|
||||||
if (!$pid) {
|
if (!$pid) {
|
||||||
|
Loading…
Reference in New Issue
Block a user