Go to file
Junio C Hamano 8a42c98501 magic pathspec: add tentative ":/path/from/top/level" pathspec support
Support ":/" magic string that can be prefixed to a pathspec element to
say "this names the path from the top-level of the working tree", when
you are in the subdirectory.

For example, you should be able to say:

    $ edit Makefile ;# top-level
    $ cd Documentation
    $ edit git.txt ;# in the subdirectory

and then do one of three things, still inside the subdirectory:

    $ git add -u .  ;# add only Documentation/git.txt
    $ git add -u :/ ;# add everything, including paths outside Documentation
    $ git add -u    ;# whatever the default setting is.

To truly support magic pathspec, the API needs to be restructured so that
get_pathspec() and init_pathspec() are unified into one call.  Currently,
the former just prefixes the user supplied pathspec with the current
subdirectory path, and the latter takes the output from the former and
pre-parses them into a bit richer structure for easier handling.  They
should become a single API function that takes the current subdirectory
path and the remainder of argv[] (after parsing --options and revision
arguments from the command line) and returns an array of parsed pathspec
elements, and "magic" should become attributes of struct pathspec_item.

This patch implements only "top" magic because it can be hacked into the
system without such a refactoring.

The syntax for magic pathspec prefix is designed to be extensible yet
simple to type to invoke a simple magic like "from the top".  The parser
for the magic prefix is hooked into get_pathspec() function in this patch,
and it needs to be moved when we refactor the API.

But we have to start from somewhere.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-04-06 17:08:46 -07:00
Documentation magic pathspec: add tentative ":/path/from/top/level" pathspec support 2011-04-06 17:08:46 -07:00
block-sha1
builtin Merge branch 'mm/maint-log-n-with-diff-filtering' 2011-03-19 23:25:38 -07:00
compat Merge branch 'maint' 2011-03-16 16:59:30 -07:00
contrib Merge branch 'ss/mergetool--lib' 2011-03-19 23:24:27 -07:00
git-gui
git_remote_helpers
gitk-git
gitweb gitweb: Always call parse_date with timezone parameter 2011-03-19 21:46:32 -07:00
perl perl: command_bidi_pipe() method should set-up git environmens 2011-02-14 15:28:13 -08:00
po i18n: Makefile: "pot" target to extract messages marked for translation 2011-03-09 23:52:52 -08:00
ppc
t Merge branch 'mm/maint-log-n-with-diff-filtering' 2011-03-19 23:25:38 -07:00
templates
vcs-svn vcs-svn: remove spurious semicolons 2011-03-16 12:56:23 -07:00
xdiff
.gitattributes
.gitignore gitignore: add test-mktemp to ignore list 2011-02-13 15:15:08 -08:00
.mailmap
COPYING
GIT-VERSION-GEN Git 1.7.4.1 2011-02-11 14:39:55 -08:00
INSTALL
Makefile Merge branch 'ab/i18n-basic' 2011-03-19 23:24:42 -07:00
README
RelNotes Prepare draft release notes to 1.7.4.2 2011-03-16 16:47:40 -07:00
abspath.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
aclocal.m4 configure: use AC_LANG_PROGRAM consistently 2011-02-14 10:55:15 -08:00
advice.c
advice.h
alias.c
alloc.c
archive-tar.c
archive-zip.c
archive.c
archive.h
attr.c
attr.h
base85.c
bisect.c
bisect.h
blob.c
blob.h
branch.c Merge branch 'jh/maint-do-not-track-non-branches' 2011-03-15 14:22:13 -07:00
branch.h
builtin.h repo-config: add deprecation warning 2011-02-13 15:13:41 -08:00
bundle.c
bundle.h
cache-tree.c
cache-tree.h
cache.h Merge branch 'ab/i18n-basic' 2011-03-19 23:24:42 -07:00
check-builtins.sh
check-racy.c
check_bindir
color.c wt-status: add helpers for printing wt-status lines 2011-03-08 12:12:42 -08:00
color.h wt-status: add helpers for printing wt-status lines 2011-03-08 12:12:42 -08:00
combine-diff.c
command-list.txt
commit.c
commit.h standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
config.c Merge branch 'maint' 2011-03-16 16:59:30 -07:00
config.mak.in
configure.ac configure: use AC_LANG_PROGRAM consistently 2011-02-14 10:55:15 -08:00
connect.c
convert.c enums: omit trailing comma for portability 2011-03-16 12:31:32 -07:00
copy.c
csum-file.c
csum-file.h
ctype.c
daemon.c
date.c
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c
diff-no-index.c
diff.c Merge branch 'jk/merge-rename-ux' 2011-03-19 23:23:56 -07:00
diff.h Merge branch 'jk/merge-rename-ux' 2011-03-19 23:23:56 -07:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c Merge branch 'jk/merge-rename-ux' 2011-03-19 23:23:56 -07:00
diffcore.h
dir.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
dir.h
editor.c
entry.c
environment.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
exec_cmd.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
exec_cmd.h
fast-import.c Merge branch 'maint' 2011-03-16 16:59:30 -07:00
fetch-pack.h standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
fixup-builtins
fsck.c strbuf: add strbuf_vaddf 2011-02-26 01:06:50 -08:00
fsck.h
generate-cmdlist.sh standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
gettext.c i18n: do not poison translations unless GIT_GETTEXT_POISON envvar is set 2011-03-08 12:10:03 -08:00
gettext.h i18n: add stub Q_() wrapper for ngettext 2011-03-09 23:50:57 -08:00
git-add--interactive.perl
git-am.sh
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'jk/strbuf-vaddf' 2011-03-15 14:23:04 -07:00
git-cvsexportcommit.perl
git-cvsimport.perl git-cvsimport.perl: Bail out right away when reading from the server fails 2011-02-27 02:13:21 -08:00
git-cvsserver.perl
git-difftool--helper.sh
git-difftool.perl
git-filter-branch.sh
git-instaweb.sh git-instaweb: Change how gitweb.psgi is made runnable as standalone app 2011-02-27 22:02:31 -08:00
git-lost-found.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh Merge branch 'ss/mergetool--lib' 2011-03-19 23:24:27 -07:00
git-mergetool.sh mergetool: don't skip modify/remove conflicts 2011-02-16 13:21:09 -08:00
git-parse-remote.sh git-request-pull: open-code the only invocation of get_remote_url 2011-03-02 12:26:58 -08:00
git-pull.sh Merge branch 'jk/merge-rename-ux' 2011-03-19 23:23:56 -07:00
git-quiltimport.sh
git-rebase--interactive.sh
git-rebase.sh
git-relink.perl
git-remote-testgit.py
git-repack.sh
git-request-pull.sh git-request-pull: open-code the only invocation of get_remote_url 2011-03-02 12:26:58 -08:00
git-send-email.perl
git-sh-setup.sh
git-stash.sh
git-submodule.sh submodule: no [--merge|--rebase] when newly cloned 2011-02-17 12:19:18 -08:00
git-svn.perl
git-web--browse.sh
git.c git.c: reorder builtin command list 2011-02-15 13:46:18 -08:00
git.spec.in
graph.c
graph.h
grep.c
grep.h
hash.c for_each_hash: allow passing a 'void *data' pointer to callback 2011-02-18 22:25:51 -08:00
hash.h for_each_hash: allow passing a 'void *data' pointer to callback 2011-02-18 22:25:51 -08:00
help.c
help.h
hex.c
http-backend.c
http-fetch.c
http-push.c standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
http-walker.c standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
http.c
http.h standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
ident.c
imap-send.c
levenshtein.c
levenshtein.h
list-objects.c
list-objects.h
ll-merge.c
ll-merge.h
lockfile.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
log-tree.c
log-tree.h
mailmap.c
mailmap.h
match-trees.c
merge-file.c
merge-recursive.c Merge branch 'jk/merge-rename-ux' 2011-03-19 23:23:56 -07:00
merge-recursive.h Merge branch 'jk/merge-rename-ux' 2011-03-19 23:23:56 -07:00
name-hash.c
notes-cache.c
notes-cache.h
notes-merge.c correct type of EMPTY_TREE_SHA1_BIN 2011-02-14 10:48:06 -08:00
notes-merge.h
notes.c
notes.h
object.c
object.h object.h: Remove obsolete struct object_refs 2011-03-14 10:49:28 -07:00
pack-check.c standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
pack-refs.c
pack-refs.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
pager.c
parse-options.c
parse-options.h Make <identifier> lowercase as per CodingGuidelines 2011-02-15 11:53:09 -08:00
patch-delta.c compat: helper for detecting unsigned overflow 2011-02-10 13:47:56 -08:00
patch-ids.c
patch-ids.h
path.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
pkt-line.c add packet tracing debug code 2011-03-08 12:12:04 -08:00
pkt-line.h
preload-index.c
pretty.c format-patch: rfc2047-encode newlines in headers 2011-02-23 16:09:33 -08:00
progress.c
progress.h
quote.c
quote.h
reachable.c
reachable.h
read-cache.c Merge branch 'nd/hash-object-sanity' 2011-02-27 21:58:30 -08:00
reflog-walk.c
reflog-walk.h
refs.c
refs.h
remote-curl.c Merge branch 'sp/maint-smart-http-sans-100-continue' 2011-03-14 11:59:10 -07:00
remote.c
remote.h
replace_object.c
rerere.c rerere "remaining" 2011-02-16 13:20:50 -08:00
rerere.h rerere "remaining" 2011-02-16 13:20:50 -08:00
resolve-undo.c
resolve-undo.h
revision.c
revision.h
run-command.c
run-command.h
send-pack.h
server-info.c
setup.c magic pathspec: add tentative ":/path/from/top/level" pathspec support 2011-04-06 17:08:46 -07:00
sha1-lookup.c
sha1-lookup.h
sha1_file.c Merge branch 'sp/maint-fd-limit' 2011-03-15 14:22:23 -07:00
sha1_name.c Revert "core.abbrevguard: Ensure short object names stay unique a bit longer" 2011-03-10 22:41:14 -08:00
shallow.c
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
strbuf.c strbuf: add strbuf_vaddf 2011-02-26 01:06:50 -08:00
strbuf.h strbuf: add strbuf_vaddf 2011-02-26 01:06:50 -08:00
string-list.c string_list_append: always set util pointer to NULL 2011-02-14 10:55:03 -08:00
string-list.h standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
submodule.c diff --submodule: split into bite-sized pieces 2011-03-16 12:55:49 -07:00
submodule.h
symlinks.c do not overwrite untracked symlinks 2011-02-21 22:51:07 -08:00
tag.c parse_tag_buffer(): do not prefixcmp() out of range 2011-02-16 10:05:14 -08:00
tag.h
tar.h
test-chmtime.c
test-ctype.c
test-date.c
test-delta.c
test-dump-cache-tree.c
test-genrandom.c
test-index-version.c
test-line-buffer.c vcs-svn: allow input from file descriptor 2011-02-26 04:59:37 -06:00
test-match-trees.c
test-mktemp.c
test-obj-pool.c
test-parse-options.c Make <identifier> lowercase as per CodingGuidelines 2011-02-15 11:53:11 -08:00
test-path-utils.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
test-run-command.c
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-pool.c
test-subprocess.c
test-svn-fe.c
test-treap.c
thread-utils.c
thread-utils.h
trace.c trace: give repo_setup trace its own key 2011-03-08 12:12:04 -08:00
transport-helper.c Merge branch 'maint' 2011-03-16 16:59:30 -07:00
transport.c
transport.h
tree-diff.c
tree-walk.c
tree-walk.h
tree.c
tree.h
unimplemented.sh
unpack-trees.c Revert "unpack_trees(): skip trees that are the same in all input" 2011-02-15 10:47:04 -08:00
unpack-trees.h
upload-pack.c add packet tracing debug code 2011-03-08 12:12:04 -08:00
url.c
url.h
usage.c
userdiff.c Merge branch 'tr/diff-words-test' 2011-02-09 16:41:17 -08:00
userdiff.h
utf8.c strbuf: add fixed-length version of add_wrapped_text 2011-02-23 13:44:36 -08:00
utf8.h strbuf: add fixed-length version of add_wrapped_text 2011-02-23 13:44:36 -08:00
walker.c
walker.h
wrap-for-bin.sh
wrapper.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
write_or_die.c
ws.c
wt-status.c Merge branch 'jn/status-translatable' 2011-03-19 23:24:19 -07:00
wt-status.h Merge branch 'jn/status-translatable' 2011-03-19 23:24:19 -07:00
xdiff-interface.c
xdiff-interface.h
zlib.c

README

////////////////////////////////////////////////////////////////

	GIT - the stupid content tracker

////////////////////////////////////////////////////////////////

"git" can mean anything, depending on your mood.

 - random three-letter combination that is pronounceable, and not
   actually used by any common UNIX command.  The fact that it is a
   mispronunciation of "get" may or may not be relevant.
 - stupid. contemptible and despicable. simple. Take your pick from the
   dictionary of slang.
 - "global information tracker": you're in a good mood, and it actually
   works for you. Angels sing, and a light suddenly fills the room.
 - "goddamn idiotic truckload of sh*t": when it breaks

Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

Git is an Open Source project covered by the GNU General Public License.
It was originally written by Linus Torvalds with help of a group of
hackers around the net. It is currently maintained by Junio C Hamano.

Please read the file INSTALL for installation instructions.

See Documentation/gittutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands, and
Documentation/git-commandname.txt for documentation of each command.
If git has been correctly installed, then the tutorial can also be
read with "man gittutorial" or "git help tutorial", and the
documentation of each command with "man git-commandname" or "git help
commandname".

CVS users may also want to read Documentation/gitcvs-migration.txt
("man gitcvs-migration" or "git help cvs-migration" if git is
installed).

Many Git online resources are accessible from http://git-scm.com/
including full documentation and Git related tools.

The user discussion and development of Git take place on the Git
mailing list -- everyone is welcome to post bug reports, feature
requests, comments and patches to git@vger.kernel.org. To subscribe
to the list, send an email with just "subscribe git" in the body to
majordomo@vger.kernel.org. The mailing list archives are available at
http://marc.theaimsgroup.com/?l=git and other archival sites.

The messages titled "A note from the maintainer", "What's in
git.git (stable)" and "What's cooking in git.git (topics)" and
the discussion following them on the mailing list give a good
reference for project status, development direction and
remaining tasks.