aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Documentation/git-grep.txt47
-rw-r--r--Documentation/git.txt9
-rw-r--r--INSTALL5
-rw-r--r--Makefile2
-rw-r--r--cache.h11
-rwxr-xr-xgit-checkout.sh1
-rw-r--r--git-core.spec.in10
-rwxr-xr-xgit-format-patch.sh38
-rwxr-xr-xgit-grep.sh43
-rwxr-xr-xgit-merge-fredrik.py39
-rw-r--r--gitMergeCommon.py15
12 files changed, 181 insertions, 40 deletions
diff --git a/.gitignore b/.gitignore
index be9ea5fa9..cc2b29ebf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,6 +31,7 @@ git-fetch-pack
git-format-patch
git-fsck-objects
git-get-tar-commit-id
+git-grep
git-hash-object
git-http-fetch
git-init-db
diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt
new file mode 100644
index 000000000..c275ae26f
--- /dev/null
+++ b/Documentation/git-grep.txt
@@ -0,0 +1,47 @@
+git-grep(1)
+===========
+v0.99.6, Sep 2005
+
+NAME
+----
+git-grep - print lines matching a pattern
+
+
+SYNOPSIS
+--------
+'git-grep' <option>... <pattern> <path>...
+
+DESCRIPTION
+-----------
+Searches list of files `git-ls-files` produces for lines
+containing a match to the given pattern.
+
+
+OPTIONS
+-------
+<option>...::
+ Either an option to pass to `grep` or `git-ls-files`.
+ Some `grep` options, such as `-C` and `-m`, that take
+ parameters are known to `git-grep`.
+
+<pattern>::
+ The pattern to look for.
+
+<path>...::
+
+ Optional paths to limit the set of files to be searched;
+ passed to `git-ls-files`.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the link:git.html[git] suite
+
diff --git a/Documentation/git.txt b/Documentation/git.txt
index aabc77496..31dd4749e 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -1,6 +1,6 @@
git(7)
======
-v0.99.5, Aug 2005
+v0.99.6, Sep 2005
NAME
----
@@ -238,7 +238,7 @@ link:git-commit.html[git-commit]::
Previously this command was known as git-commit-script.
link:git-diff.html[git-diff]::
- git-diff.
+ Show changes between commits, commit and working tree, etc.
Previously this command was known as git-diff-script.
link:git-fetch.html[git-fetch]::
@@ -246,9 +246,12 @@ link:git-fetch.html[git-fetch]::
Previously this command was known as git-fetch-script.
link:git-format-patch.html[git-format-patch]::
- git-format-patch.
+ Prepare patches for e-mail submission.
Previously this command was known as git-format-patch-script.
+link:git-grep.html[git-grep]::
+ Print lines matching a pattern
+
link:git-log.html[git-log]::
Shows commit logs.
Previously this command was known as git-log-script.
diff --git a/INSTALL b/INSTALL
index 14580cc47..6e336d7c2 100644
--- a/INSTALL
+++ b/INSTALL
@@ -64,3 +64,8 @@ Issues of note:
You'll only need the merge program if you do development using
git, and if you only use git to track other peoples work you'll
never notice the lack of it.
+
+ - "wish", the TCL/Tk windowing shell is used in gitk to show the
+ history graphically
+
+ - "ssh" is used to push and pull over the net
diff --git a/Makefile b/Makefile
index 3f699864e..e2bbcb590 100644
--- a/Makefile
+++ b/Makefile
@@ -76,7 +76,7 @@ SCRIPT_SH = \
git-tag.sh git-verify-tag.sh git-whatchanged.sh git.sh \
git-applymbox.sh git-applypatch.sh \
git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \
- git-merge-resolve.sh
+ git-merge-resolve.sh git-grep.sh
SCRIPT_PERL = \
git-archimport.perl git-cvsimport.perl git-relink.perl \
diff --git a/cache.h b/cache.h
index dcfcbbc7c..1d99d6817 100644
--- a/cache.h
+++ b/cache.h
@@ -50,6 +50,17 @@
* Your search - "port 9418" - did not match any documents.
*
* as www.google.com puts it.
+ *
+ * This port has been properly assigned for git use by IANA:
+ * git (Assigned-9418) [I06-050728-0001].
+ *
+ * git 9418/tcp git pack transfer service
+ * git 9418/udp git pack transfer service
+ *
+ * with Linus Torvalds <torvalds@osdl.org> as the point of
+ * contact. September 2005.
+ *
+ * See http://www.iana.org/assignments/port-numbers
*/
#define DEFAULT_GIT_PORT 9418
diff --git a/git-checkout.sh b/git-checkout.sh
index 4e7c57a5f..4a605cd9c 100755
--- a/git-checkout.sh
+++ b/git-checkout.sh
@@ -55,6 +55,7 @@ then
git-read-tree --reset $new &&
git-checkout-index -q -f -u -a
else
+ git-update-index --refresh >/dev/null
git-read-tree -m -u $old $new
fi
diff --git a/git-core.spec.in b/git-core.spec.in
index b78a46802..f98f8db7c 100644
--- a/git-core.spec.in
+++ b/git-core.spec.in
@@ -10,7 +10,7 @@ URL: http://kernel.org/pub/software/scm/git/
Source: http://kernel.org/pub/software/scm/git/%{name}-%{version}.tar.gz
BuildRequires: zlib-devel, openssl-devel, curl-devel %{!?_without_docs:, xmlto, asciidoc > 6.0.3}
BuildRoot: %{_tmppath}/%{name}-%{version}-root
-Requires: sh-utils, diffutils, rsync, rcs, python >= 2.4
+Requires: sh-utils, curl, diffutils, rsync, rcs, openssh-clients, perl, python >= 2.4, tk
%description
This is a stupid (but extremely fast) directory content manager. It
@@ -40,10 +40,14 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/git-core/templates/*
%doc README COPYING Documentation/*.txt
%{!?_without_docs: %doc Documentation/*.html }
-%{!?_without_docs: %{_mandir}/man1/*.1.gz}
-%{!?_without_docs: %{_mandir}/man7/*.7.gz}
+%{!?_without_docs: %{_mandir}/man1/*.1*}
+%{!?_without_docs: %{_mandir}/man7/*.7*}
%changelog
+* Sun Sep 11 2005 Horst H. von Brand <vonbrand@inf.utfsm.cl>
+- Updated dependencies
+- Don't assume manpages are gzipped
+
* Sun Aug 07 2005 Horst H. von Brand <vonbrand@inf.utfsm.cl>
- Redid the description
- Cut overlong make line, loosened changelog a bit
diff --git a/git-format-patch.sh b/git-format-patch.sh
index cfba1deb2..525a2f221 100755
--- a/git-format-patch.sh
+++ b/git-format-patch.sh
@@ -27,8 +27,6 @@ with applymbox.
}
diff_opts=
-IFS='
-'
LF='
'
@@ -61,7 +59,10 @@ do
--output-directo|--output-director|--output-directory)
case "$#" in 1) usage ;; esac; shift
outdir="$1" ;;
- -*) diff_opts="$diff_opts$LF$1" ;;
+ -*' '* | -*"$LF"* | -*' '*)
+ # Ignore diff option that has whitespace for now.
+ ;;
+ -*) diff_opts="$diff_opts$1 " ;;
*) break ;;
esac
shift
@@ -72,16 +73,20 @@ tt)
die '--keep-subject and --numbered are incompatible.' ;;
esac
-revpair=
+rev1= rev2=
case "$#" in
2)
- revpair="$1..$2" ;;
+ rev1="$1" rev2="$2" ;;
1)
case "$1" in
*..*)
- revpair="$1";;
+ rev1=`expr "$1" : '\(.*\)\.\.'`
+ rev2=`expr "$1" : '.*\.\.\(.*\)'`
+ ;;
*)
- revpair="$1..HEAD";;
+ rev1="$1"
+ rev2="HEAD"
+ ;;
esac ;;
*)
usage ;;
@@ -127,10 +132,21 @@ _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"
stripCommitHead='/^'"$_x40"' (from '"$_x40"')$/d'
-git-rev-list --no-merges --merge-order \
- $(git-rev-parse --revs-only "$revpair") >$series
+git-cherry -v "$rev1" "$rev2" |
+while read sign rev comment
+do
+ case "$sign" in
+ '-')
+ echo >&2 "Merged already: $comment"
+ ;;
+ *)
+ echo $rev
+ ;;
+ esac
+done >$series
+
total=`wc -l <$series | tr -dc "[0-9]"`
-i=$total
+i=1
while read commit
do
git-cat-file commit "$commit" | git-stripspace >$commsg
@@ -145,7 +161,7 @@ do
esac
file=`printf '%04d-%stxt' $i "$title"`
- i=`expr "$i" - 1`
+ i=`expr "$i" + 1`
echo "* $file"
{
mailScript='
diff --git a/git-grep.sh b/git-grep.sh
new file mode 100755
index 000000000..51924fd7c
--- /dev/null
+++ b/git-grep.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# Copyright (c) Linus Torvalds, 2005
+#
+
+pattern=
+flags=()
+git_flags=()
+while : ; do
+ case "$1" in
+ --cached|--deleted|--others|--killed|\
+ --ignored|--exclude=*|\
+ --exclude-from=*|\--exclude-per-directory=*)
+ git_flags=("${git_flags[@]}" "$1")
+ ;;
+ -e)
+ pattern="$2"
+ shift
+ ;;
+ -A|-B|-C|-D|-d|-f|-m)
+ flags=("${flags[@]}" "$1" "$2")
+ shift
+ ;;
+ --)
+ # The rest are git-ls-files paths (or flags)
+ shift
+ break
+ ;;
+ -*)
+ flags=("${flags[@]}" "$1")
+ ;;
+ *)
+ if [ -z "$pattern" ]; then
+ pattern="$1"
+ shift
+ fi
+ break
+ ;;
+ esac
+ shift
+done
+git-ls-files -z "${git_flags[@]}" "$@" |
+ xargs -0 grep "${flags[@]}" "$pattern"
diff --git a/git-merge-fredrik.py b/git-merge-fredrik.py
index 920e10ffb..27b84867b 100755
--- a/git-merge-fredrik.py
+++ b/git-merge-fredrik.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
-import sys, math, random, os, re, signal, tempfile, stat, errno
+import sys, math, random, os, re, signal, tempfile, stat, errno, traceback
from heapq import heappush, heappop
from sets import Set
@@ -60,7 +60,7 @@ def merge(h1, h2, branch1Name, branch2Name, graph, callDepth=0):
branch1Name, branch2Name,
cleanCache, updateWd)
- if clean or alwaysWriteTree:
+ if clean or cleanCache:
res = Commit(None, [h1, h2], tree=shaRes)
graph.addNode(res)
else:
@@ -120,9 +120,8 @@ def unmergedCacheEntries():
e.stages[stage].mode = mode
e.stages[stage].sha1 = sha1
else:
- print 'Error: Merge program failed: Unexpected output from', \
- 'git-ls-files:', l
- sys.exit(2)
+ die('Error: Merge program failed: Unexpected output from', \
+ 'git-ls-files:', l)
return res
def mergeTrees(head, merge, common, branch1Name, branch2Name,
@@ -381,26 +380,25 @@ def processEntry(entry, branch1Name, branch2Name, files, dirs,
os.unlink(src1)
os.unlink(src2)
else:
- print 'ERROR: Fatal merge failure.'
- print "ERROR: Shouldn't happen"
- sys.exit(2)
+ die("ERROR: Fatal merge failure, shouldn't happen.")
return cleanMerge
def usage():
- print 'Usage:', sys.argv[0], ' <base>... -- <head> <remote>..'
- sys.exit(2)
+ die('Usage:', sys.argv[0], ' <base>... -- <head> <remote>..')
# main entry point as merge strategy module
# The first parameters up to -- are merge bases, and the rest are heads.
# This strategy module figures out merge bases itself, so we only
# get heads.
+if len(sys.argv) < 4:
+ usage()
+
for nextArg in xrange(1, len(sys.argv)):
if sys.argv[nextArg] == '--':
if len(sys.argv) != nextArg + 3:
- print 'Not handling anything other than two heads merge.'
- sys.exit(2)
+ die('Not handling anything other than two heads merge.')
try:
h1 = firstBranch = sys.argv[nextArg + 1]
h2 = secondBranch = sys.argv[nextArg + 2]
@@ -409,15 +407,20 @@ for nextArg in xrange(1, len(sys.argv)):
break
print 'Merging', h1, 'with', h2
-h1 = runProgram(['git-rev-parse', '--verify', h1 + '^0']).rstrip()
-h2 = runProgram(['git-rev-parse', '--verify', h2 + '^0']).rstrip()
-graph = buildGraph([h1, h2])
+try:
+ h1 = runProgram(['git-rev-parse', '--verify', h1 + '^0']).rstrip()
+ h2 = runProgram(['git-rev-parse', '--verify', h2 + '^0']).rstrip()
-[res, clean] = merge(graph.shaMap[h1], graph.shaMap[h2],
- firstBranch, secondBranch, graph)
+ graph = buildGraph([h1, h2])
-print ''
+ [res, clean] = merge(graph.shaMap[h1], graph.shaMap[h2],
+ firstBranch, secondBranch, graph)
+
+ print ''
+except:
+ traceback.print_exc(None, sys.stderr)
+ sys.exit(2)
if clean:
sys.exit(0)
diff --git a/gitMergeCommon.py b/gitMergeCommon.py
index dfa49ff7e..ce9694b15 100644
--- a/gitMergeCommon.py
+++ b/gitMergeCommon.py
@@ -10,6 +10,10 @@ if sys.version_info[0] < 2 or \
import subprocess
+def die(*args):
+ printList(args, sys.stderr)
+ sys.exit(2)
+
# Debugging machinery
# -------------------
@@ -28,11 +32,11 @@ def debug(*args):
if funcName in functionsToDebug:
printList(args)
-def printList(list):
+def printList(list, file=sys.stdout):
for x in list:
- sys.stdout.write(str(x))
- sys.stdout.write(' ')
- sys.stdout.write('\n')
+ file.write(str(x))
+ file.write(' ')
+ file.write('\n')
# Program execution
# -----------------
@@ -42,6 +46,9 @@ class ProgramError(Exception):
self.progStr = progStr
self.error = error
+ def __str__(self):
+ return self.progStr + ': ' + self.error
+
addDebug('runProgram')
def runProgram(prog, input=None, returnCode=False, env=None, pipeOutput=True):
debug('runProgram prog:', str(prog), 'input:', str(input))