GitPython icon indicating copy to clipboard operation
GitPython copied to clipboard

Working with a repository that has a different working directory

Open LevonX opened this issue 2 years ago • 3 comments

Hello!

I'm trying to use a repository that has been initialized like this:

mkdir git
mkdir work
git --git-dir=пit/test --work-tree=work/test init

But it doesn't work. For example, when requesting untracked_files I get the error:

    raise GitCommandError(remove_password_if_present(self.args), status, errstr)
git.exc.GitCommandError: Cmd('git') failed due to: exit code(128)
  cmdline: git status --porcelain --untracked-files
  stderr: 'fatal: not a git repository (or any of the parent directories): .git

My code:

repo = Repo(repo_path)
print(repo.untracked_files())

LevonX avatar Oct 16 '23 09:10 LevonX

Thanks for reporting!

There most definitely isn't any test for this usecase, and certain assumptions aren't met anymore leading to this failure.

The trick here is that git stores the worktree location in its configuration, which allows it work as normal at least while the CWD is the repository itself.

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	worktree = /path/to/separate-work-dir
	ignorecase = true
	precomposeunicode = true

gitoxide also has a problem with that and I will fix it there - for GitPython we will have to hope for a contribution though.

Byron avatar Oct 16 '23 10:10 Byron

and certain assumptions aren't met anymore leading to this failure.

Can you go more into depth about this? I suspect this or other assumptions may have something to with the issue I reported earlier today.

pushfoo avatar Oct 16 '23 16:10 pushfoo

Unfortunately I can't, by now it's all guess-work and intuition. I don't think the issue you might be referring to is related though.

Byron avatar Oct 16 '23 18:10 Byron