Junio C Hamano d089ebaad5 setup: sanitize absolute and funny paths in get_pathspec()
The prefix_path() function called from get_pathspec() is
responsible for translating list of user-supplied pathspecs to
list of pathspecs that is relative to the root of the work
tree.  When working inside a subdirectory, the user-supplied
pathspecs are taken to be relative to the current subdirectory.

Among special path components in pathspecs, we used to accept
and interpret only "." ("the directory", meaning a no-op) and
".."  ("up one level") at the beginning.  Everything else was
passed through as-is.

For example, if you are in Documentation/ directory of the
project, you can name Documentation/howto/maintain-git.txt as:

    howto/maintain-git.txt
    ../Documentation/howto/maitain-git.txt
    ../././Documentation/howto/maitain-git.txt

but not as:

    howto/./maintain-git.txt
    $(pwd)/howto/maintain-git.txt

This patch updates prefix_path() in several ways:

 - If the pathspec is not absolute, prefix (i.e. the current
   subdirectory relative to the root of the work tree, with
   terminating slash, if not empty) and the pathspec is
   concatenated first and used in the next step.  Otherwise,
   that absolute pathspec is used in the next step.

 - Then special path components "." (no-op) and ".." (up one
   level) are interpreted to simplify the path.  It is an error
   to have too many ".." to cause the intermediate result to
   step outside of the input to this step.

 - If the original pathspec was not absolute, the result from
   the previous step is the resulting "sanitized" pathspec.
   Otherwise, the result from the previous step is still
   absolute, and it is an error if it does not begin with the
   directory that corresponds to the root of the work tree.  The
   directory is stripped away from the result and is returned.

 - In any case, the resulting pathspec in the array
   get_pathspec() returns omit the ones that caused errors.

With this patch, the last two examples also behave as expected.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-02-05 00:44:10 -08:00
2007-06-07 00:04:01 -07:00
2007-11-11 12:10:35 -08:00
2008-02-03 13:00:15 -08:00
2008-01-23 21:37:12 -08:00
2007-06-07 00:04:01 -07:00
2007-06-07 00:04:01 -07:00
2007-11-15 21:23:47 -08:00
2007-12-19 17:24:04 -08:00
2007-10-19 01:18:55 -04:00
2007-05-30 15:03:50 -07:00
2008-01-16 15:35:35 -08:00
2007-06-07 00:04:01 -07:00
2008-01-16 15:35:35 -08:00
2007-12-05 17:57:11 -08:00
2008-02-03 00:56:35 -08:00
2008-01-16 15:35:35 -08:00
2008-01-07 14:02:25 -08:00
2008-02-03 22:49:01 -08:00
2007-12-19 14:59:11 -08:00
2007-11-09 00:21:44 -08:00
2007-12-04 17:07:10 -08:00
2008-01-16 15:35:35 -08:00
2008-01-16 15:35:35 -08:00
2008-01-16 15:35:35 -08:00
2008-01-16 15:35:35 -08:00
2007-12-04 17:16:33 -08:00
2008-01-16 15:35:35 -08:00
2007-09-26 02:27:06 -07:00
2007-09-26 02:27:06 -07:00
2007-12-05 17:57:11 -08:00
2008-02-03 22:49:01 -08:00
2008-01-16 09:10:34 -08:00
2007-06-07 00:04:01 -07:00
2007-06-07 00:04:01 -07:00
2008-01-04 16:05:23 -08:00
2007-06-07 00:04:01 -07:00
2007-12-16 12:50:08 -08:00
2007-11-14 14:15:40 -08:00
2008-02-03 16:01:27 -08:00
2007-11-17 21:39:37 -08:00
2007-11-28 17:06:57 -08:00
2007-10-26 23:17:23 -07:00
2008-02-01 19:10:10 -08:00
2007-12-04 17:16:33 -08:00
2006-09-27 23:59:09 -07:00
2007-11-14 14:04:19 -08:00
2007-10-02 17:35:29 -07:00
2007-10-03 04:28:24 -07:00
2007-10-26 23:27:23 -07:00
2008-01-26 10:52:40 -08:00
2007-12-13 23:04:26 -08:00
2007-06-07 00:04:01 -07:00
2008-01-16 15:35:35 -08:00
2007-12-13 23:04:26 -08:00
2007-06-07 00:04:01 -07:00
2007-06-07 00:04:01 -07:00
2007-06-07 00:04:01 -07:00
2007-11-02 16:27:37 -07:00
2007-11-02 16:27:37 -07:00
2007-06-07 00:04:01 -07:00
2007-06-07 00:04:01 -07:00
2007-12-26 17:13:36 -08:00
2007-12-26 17:13:36 -08:00
2007-07-02 17:12:48 -07:00
2008-01-07 22:41:43 -08:00
2007-12-03 23:43:07 -08:00
2007-12-26 11:57:36 -08:00
2007-11-09 21:14:10 -08:00
2007-12-04 17:07:10 -08:00
2007-06-07 00:04:01 -07:00
2008-01-03 01:23:12 -08:00
2005-11-02 16:50:58 -08:00
2006-03-25 16:35:43 -08:00
2007-05-01 02:59:08 -07:00
2007-08-10 11:44:23 -07:00
2007-12-18 01:10:24 -08:00
2007-12-09 00:55:55 -08:00
2007-09-19 03:22:30 -07:00

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

	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/tutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands,
and "man git-commandname" for documentation of each command.
CVS users may also want to read Documentation/cvs-migration.txt.

Many Git online resources are accessible from http://git.or.cz/
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.
Description
No description provided
Readme 582 MiB
Languages
C 50.5%
Shell 38.7%
Perl 4.5%
Tcl 3.2%
Python 0.8%
Other 2.1%