Re: Self-inflicted "abort" in a newbie attempt at read-only exploration of a cloned repository?
- From
Bryan Turner <bturner@atlassian.com>
- Date
- Apr 5, 2018, 23:18 UTC
- Message-ID
- <CAGyf7-E9=Mm1oJdhwHTmg2byrOxMRFVEjmYHCFGqqP8pvK=vJg@mail.gmail.com>
- In-Reply-To
- <5AC67C43.9080500@connotech.com>
On Thu, Apr 5, 2018 at 12:42 PM, Thierry Moreau <thierry.moreau@connotech.com> wrote:
Show 24 quoted lines
> Dear GIT enthusiasts! > > This ends up with a "git checkout" command aborting. A bit frustrating at > the early stage of GIT learning curve. > > My first goal is to clone repositories locally in order to explore the > various linux kernel versions, with the rich GIT metadata. > > Thus, I clone: > > $ git clone --branch linux-4.16.y > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git > linux-stable > $ git -C linux-stable/ branch > * linux-4.16.y > > So far so good. Then, I want to extract an earlier kernel version into a tmp > dir: > > $ mkdir tmp > $ git -C linux-stable/ --work-tree $PWD/tmp/ checkout linux-4.15.y > $ git -C linux-stable/ branch > * linux-4.15.y > linux-4.16.y
The documentation for --work-tree says:
--work-tree=<path>
Set the path to the working tree. It can be an absolute path or a path relative to the current working directory. This can also be controlled by setting the GIT_WORK_TREE environment variable and the core.worktree configuration variable (see core.worktree in git-config(1) for a more detailed discussion).
So passing --work-tree tells Git where to store your _files_, but it's still using the same .git directory.
If your goal is to have worktrees for various versions, that implies the git worktree [1] command might be more along the lines of what you're looking for. An invocation based on above might look like this: $ git -C linux-stable/ worktree add $PWD/tmp/ checkout linux-4.15.y
That should leave linux-4.16.y checked out in linux-stable, while creating a full work tree in $PWD/tmp that has 4.15.y checked out.
Note that worktree is a newer git command. 2.17 has it, but old versions like 2.1 won't.
[1] https://git-scm.com/docs/git-worktree
Hope this helps! Bryan