Skip to content

Passing configuration parameter (git -c or git --config-env=) - set_persistent_git_options() (mostly) works #1604

Description

@linde12

Hi!

I want to override system wide and global git configs for all commands i'm running in this repo in order to set credential.helper to nothing (dont cache or use system store to save my passwords)

This can be done with git like so:

git -c credential.helper="" fetch

but, if possible, i'd like to use gitpythons Repo to fetch my do my fetching, but i can't find a way to pass the -c flag to git itself and not git-fetch. E.g. doing the following doesn't work because the flag is passed to git-fetch:

repo = Repo.init(path)
remote = repo.create_head(...)
...
remote.fetch(ref, c=\credential.helper=""')

because that essentially does:

git fetch -c credential.helper=""

but git-fetch doesn't know about any -c flag, only git does.

Is this even possible with gitpython? Thanks!

Activity

  1. changed the title [-]Passing configuration parameter (`git -c` or `git --config-env=`[/-] [+]Passing configuration parameter (`git -c` or `git --config-env=`)[/+] on Jul 6, 2023
  2. linde12 commented on Jul 6, 2023

    @linde12
    Author

    I see Repo.clone has multi_options, but i want to use these set config-env for git-fetch too

  3. linde12 commented on Jul 6, 2023

    @linde12
    Author

    A colleague suggested set_persistent_git_options and it does indeed seem like what i want, but it does not work with submodules :-/

    e.g.

    repo = Repo(..)
    remote = repo.create_head(...)
    remote.fetch(ref) # OK my `-c core.askpass=...` works here
    ...
    for submodule in repo.submodules:
      submodule.update(...) # not OK

    is it clashing with clone_multi_options perhpas?

  4. Byron commented on Jul 6, 2023

    @Byron
    Member

    Thanks for reporting and sharing the workaround.

    Maybe submodules have their own copy of the git command which is why it isn't present there? If so, is there a way to use set_persistent_git_options on each submodule?

    Of course, this might be a genuine bug, especially related to submodules everything is possible.

  5. changed the title [-]Passing configuration parameter (`git -c` or `git --config-env=`)[/-] [+]Passing configuration parameter (`git -c` or `git --config-env=`) - `set_persistent_git_options()` works[/+] on Jul 6, 2023
  6. changed the title [-]Passing configuration parameter (`git -c` or `git --config-env=`) - `set_persistent_git_options()` works[/-] [+]Passing configuration parameter (`git -c` or `git --config-env=`) - `set_persistent_git_options()` (mostly) works[/+] on Jul 6, 2023
  7. linde12 commented on Jul 6, 2023

    @linde12
    Author

    @Byron

    Thanks for the quick response!

    Yeah this is what i thought as well, that submodules dont share the same git instance with the repo.

    I didn't find a way to call set_persistent_git_options for a submodule, alas i didn't dig too deep. For now i reverted to using git.execute and passing the flags myself, but id rather use the Repo construct if at all possible 😃

  8. locked and limited conversation to collaborators on Sep 7, 2023
  9. converted this issue into a discussion #1649 on Sep 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions