git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Cloning into an existing directory

From
Brent Goodrick <bgoodr@gmail.com>
Date
Feb 16, 2009, 07:10 UTC
Message-ID
<e38bce640902152310x195a14e5p445817bdfc6e319f@mail.gmail.com>
Hi,

I would like to manage my startup scripts such as .bashrc and other setup files relative to my HOME directory using Git. However, git-clone disallows cloning into the existing "." directory, but only allows cloning into a subdirectory that does not yet exist. If my home directory is /home/brentg and my remote repository is on remote_machine:~brentg/my_setup.git then git clone in my home directory on the local machine creates /home/brentg/my_setup with files such as .bashrc inside it, which is not what I want. I want them checked out and managed _in_ the current working directory, and not to mess with other files or directories that already exist that are never to be managed by git.

I don't want to create softlinks from files in the HOME directory down into the subdirectory (e.g., /home/brentg/.bashrc --> my_setup/.bashrc) if I can at all avoid it, since then to do so for all of my setup would require extra scripting work, and it may be the case that some setup files are required to be regular files and not symbolic links by certain programs. Moving the files manually is also out of the question, since then I can't do a git diff operation on the file directly.

I did see the --bare option to clone, but the entry in the git-clone man page implies that using that option turns off a lot of tracking of things that I believe I will need:

       --bare
           Make a bare GIT repository. That is, instead of creating
<directory> and placing the administrative files in
           <directory>/.git, make the <directory> itself the $GIT_DIR.
This obviously implies the -n because there is nowhere to check
           out the working tree. Also the branch heads at the remote
are copied directly to corresponding local branch heads, without
           mapping them to refs/remotes/origin/. When this option is
used, neither remote-tracking branches nor the related
           configuration variables are created.

Specifically, the statement: "branch heads at the remote are copied directly to corresponding local branch heads, without mapping them to refs/remotes/origin" and "neither remote-tracking branches nor the related configuration variables are created" are what is scaring me off.

Is there a way do to this, or is the --bare option really what I need here? If so, what are the caveats of the use of that option given the above "scary" statements.

What is interesting to note, is that git clone on a local repository to "." seems to work just fine. It is only when cloning from remote repositories that it complains about the target being an existing directory.

Thanks, bg

Next: Russell Steicke
Message 1 of 5 in “Cloning into an existing directory”
  1. Brent GoodrickFeb 16, 2009
  2. Russell SteickeFeb 16, 2009
  3. Brent GoodrickFeb 16, 2009
  4. Andrew RuderFeb 16, 2009
  5. Brent GoodrickFeb 17, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.