Jeff King 8500e0de3f set_work_tree: use chdir_notify
When we change to the top of the working tree, we manually
re-adjust $GIT_DIR and call set_git_dir() again, in order to
update any relative git-dir we'd compute earlier.

Instead of the work-tree code having to know to call the
git-dir code, let's use the new chdir_notify interface.
There are two spots that need updating, with a few
subtleties in each:

  1. the set_git_dir() code needs to chdir_notify_register()
     so it can be told when to update its path.

     Technically we could push this down into repo_set_gitdir(),
     so that even repository structs besides the_repository
     could benefit from this. But that opens up a lot of
     complications:

      - we'd still need to touch set_git_dir(), because it
        does some other setup (like setting $GIT_DIR in the
        environment)

      - submodules using other repository structs get
        cleaned up, which means we'd need to remove them
        from the chdir_notify list

      - it's unlikely to fix any bugs, since we shouldn't
        generally chdir() in the middle of working on a
        submodule

  2. setup_work_tree now needs to call chdir_notify(), and
     can lose its manual set_git_dir() call.

     Note that at first glance it looks like this undoes the
     absolute-to-relative optimization added by 044bbbcb63
     (Make git_dir a path relative to work_tree in
     setup_work_tree(), 2008-06-19). But for the most part
     that optimization was just _undoing_ the
     relative-to-absolute conversion which the function was
     doing earlier (and which is now gone).

     It is true that if you already have an absolute git_dir
     that the setup_work_tree() function will no longer make
     it relative as a side effect. But:

       - we generally do have relative git-dir's due to the
         way the discovery code works

       - if we really care about making git-dir's relative
         when possible, then we should be relativizing them
         earlier (e.g., when we see an absolute $GIT_DIR we
         could turn it relative, whether we are going to
         chdir into a worktree or not). That would cover all
         cases, including ones that 044bbbcb63 did not.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-03-30 12:49:57 -07:00
2018-03-15 15:00:46 -07:00
2018-01-15 07:47:30 +01:00
2018-03-28 11:04:24 -07:00
2018-03-14 12:01:07 -07:00
2018-03-06 14:54:07 -08:00
2017-12-27 11:16:25 -08:00
2017-12-27 11:16:25 -08:00
2018-03-06 14:54:07 -08:00
2018-03-30 12:49:57 -07:00
2018-03-30 12:49:57 -07:00
2018-03-30 12:49:57 -07:00
2018-02-13 10:17:12 -08:00
2018-02-13 10:17:12 -08:00
2018-03-06 14:54:07 -08:00
2018-03-06 14:54:07 -08:00
2018-02-13 13:39:08 -08:00
2018-02-13 13:39:04 -08:00
2018-02-15 14:55:43 -08:00
2018-02-02 11:28:41 -08:00
2018-02-02 11:28:41 -08:00
2017-12-08 09:16:27 -08:00
2017-12-08 09:16:27 -08:00
2018-03-06 14:54:07 -08:00
2018-02-15 14:55:43 -08:00
2018-02-22 10:08:05 -08:00
2018-03-30 12:49:57 -07:00
2018-03-28 11:05:14 -07:00
2018-02-13 10:17:12 -08:00
2018-03-06 14:54:07 -08:00
2018-03-21 11:30:12 -07:00
2018-02-22 10:08:05 -08:00
2018-02-22 10:08:05 -08:00
2018-03-06 14:54:07 -08:00
2018-03-30 12:49:57 -07:00
2018-03-06 14:54:07 -08:00
2017-12-27 12:28:06 -08:00
2018-03-06 14:54:07 -08:00
2018-02-02 11:28:41 -08:00
2018-03-06 14:54:07 -08:00
2017-12-13 11:14:25 -08:00
2017-12-06 09:23:44 -08:00
2017-12-12 10:41:15 -08:00
2017-12-19 11:33:55 -08:00
2018-01-16 12:16:54 -08:00
2018-03-22 14:24:45 -07:00
2018-01-22 11:32:51 -08:00
2018-03-30 12:49:57 -07:00
2018-03-21 11:30:10 -07:00
2018-03-06 14:54:07 -08:00
2018-03-14 12:01:05 -07:00
2018-02-22 10:08:05 -08:00
2018-02-22 10:08:05 -08:00
2018-03-30 12:49:57 -07:00
2018-03-30 12:49:57 -07:00
2018-02-22 10:08:05 -08:00
2018-02-13 13:39:04 -08:00
2018-02-13 13:39:04 -08:00
2018-03-29 15:39:59 -07:00
2018-03-29 15:39:59 -07:00
2018-02-22 10:08:05 -08:00

Git - fast, scalable, distributed revision control system

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 version 2 (some parts of it are under different licenses, compatible with the GPLv2). It was originally written by Linus Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

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

See Documentation/gittutorial.txt to get started, then see Documentation/giteveryday.txt for a useful minimum set of commands, and Documentation/git-.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).

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 (read Documentation/SubmittingPatches for instructions on patch submission). 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 https://public-inbox.org/git/, http://marc.info/?l=git and other archival sites.

The maintainer frequently sends the "What's cooking" reports that list the current status of various development topics to the mailing list. The discussion following them give a good reference for project status, development direction and remaining tasks.

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (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
Description
No description provided
Readme 235 MiB
Languages
C 50.1%
Shell 38.4%
Perl 5.1%
Tcl 3.3%
Python 0.8%
Other 2%