Home > Software engineering >  stop git from walking up
stop git from walking up

Time:08-14

I'm tracking my dotfiles in my home directory, so I have a .git directory in my home. Something like this.

home
    └── user
        ├── .git
        └── workspace
            ├── project1
            │   ├── .git
            │   └── main.c
            ├── project2
            │   ├── .git
            │   └── main.c
            └── tmp

in the projects directories when I execute the git status it just shows the info for that repository. But in the tmp directory, the git walks up until it reached the home directory.

I want to disable this behavior and stop git from walking up, or at least set a limit on it.

In the terminal I can achieve this by setting the environment variable GIT_CEILING_DIRECTORIES.

How do I do this in the vscode or more generally, how to tell git not to walk upwards?

CodePudding user response:

When you perform git init inside of a folder, git already recognizes all subdirectories recursively. Since you initialized your home directory /home/user, the .git folder here will be the folder used by all subdirectories unless they have a .git folder of their own.

You could add all subdirectories you dont want tracked to a .gitignore file in your home directory. However, git status in subdirectories will still show git status output, so this is not the desired solution.

If all you want to do is track your dotfiles, you could put all of them inside a folder called my_dotfiles and use this as your git repository. Then you can create symbolic links to files inside your my_dotfiles in your home directory.

Example for .bashrc, but you can do it for all your dotfiles:

cd ~
mkdir my_dotfiles
mv .bashrc my_dotfiles
cd my_dotfiles
git init
git add .
git commit -m "Initial commit"
cd ..
ln -s $HOME/my_dotfiles/.bashrc .bashrc 

Make sure to remove the .git folder from your home.

CodePudding user response:

In the terminal I can achieve this by setting the environment variable GIT_CEILING_DIRECTORIES.

How do I do this in the vscode or more generally, how to tell git not to walk upwards?

Assuming vscode respects that much of Git's configs (from what I gather it ignores quite a lot) you have to set the var in a more global environment. On systemd-based desktops that's going to be in ~/config/environment.d/*.conf, (say man environment.d), on Windows you get to find and use whatever three-page sequence of screenshots you need to follow to get you a text box you can fiddle with this month on your Windows version.

edit: @matt's comment is worth contemplating quietly over time. If you really want to manage dotfiles or something, set up a separate git dir you explicitly call out on the command line when you're updating, very few people want git clean -dfx in their home dir to wipe everything they're not tracking.

  • Related