Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option to installer so it does not change values in the global .gitconfig #142

Closed
giggio opened this issue Jan 23, 2024 · 6 comments
Closed
Labels
enhancement New feature or request
Milestone

Comments

@giggio
Copy link

giggio commented Jan 23, 2024

I use dotfiles to configure my environment, when the installer changes the values in .gitconfig it creates unwanted changes.

It would be nice to have an option to disable changes to .gitconfig, and only setup the application files in the expected directory.

The installer could read .gitconfig to find githooks.installDir, and if not found, use the default location of $HOME/.githooks.

@gabyx
Copy link
Owner

gabyx commented Jan 23, 2024

Thats true, the deeper problem here is that the installer uses the Gitconfig to store some of its persistent settings, it will always make sure that the variables it stores are consistent together.

I think the variables under concern to not change is: githooks.installDir, the other githooks.runner is internal and githooks.dialog (never used just a handy shortcut, for users)

Maybe we can say we dont change githooks.installDir basically reading it with env. values substitute but writting it unexpanded. However githooks.runner still changes by the installation. Having a flag saying no do not change certain variables is kind of crude...
#144

@giggio
Copy link
Author

giggio commented Jan 23, 2024

What I'm doing now is bypassing the installer altogether and doing my own installation.
I wrote a script that downloads the latest release, unpacks it to ~/.githooks/bin, then I run ~/.githooks/bin/cli update. It seems to work fine like that.
It still changes 2 things in my git config: githooks.cloneUrl and cloneBranch. It is adding a tab before these configs (I use 2 spaces), so I guess it is trying to update them.
I'd like it didn't change anything, either when installing or updating.

@gabyx
Copy link
Owner

gabyx commented Jan 23, 2024

Generally all githooks.* settings are updated during cli update (it runs the installer).
https://stackoverflow.com/a/42401876/293195

Maybe your suggestion is still somehow possible. I was thinking that the auto udpate feature makes everything quite complicated, but is really handy and shitty (nixos) at the same time. However, what should happen on an autoupdate (it sets Git config values potentially etc... also introducing maybe new values), so having an cli installer --no-gitconfig-changes introduces a whole lot of complication, in the sense how is it guaranteed that the install is correct or works afterwards.

Could we outsource the githooks.* config values to another file ~/.githooks/.gitconfig which is used instead? Also quite hard to implement. Somewhere in some file you need to change things. If that file is different (formatting) then what you have in your template repo (dotfiles) its always an issue... igf its a yaml file or some other format does not matter

I would need to think more on that.

@giggio
Copy link
Author

giggio commented Jan 23, 2024

Having its own config file would be nice, but I'd also like to add it to my dotfiles config, so the problem would remain.
What you could do is update only when needed. In my scenario nothing had changed, cloneurl and clonebranch remained the same. Check if the value is not equal, and only then update.
Also, you could update the config file without invoking git, after all, it is just an ini file.

@gabyx gabyx added enhancement New feature or request help wanted Extra attention is needed labels Mar 21, 2024
@gabyx gabyx added this to the Version 3.1 milestone Mar 30, 2024
@gabyx gabyx removed the help wanted Extra attention is needed label Mar 30, 2024
@gabyx
Copy link
Owner

gabyx commented Apr 18, 2024

Fixed by #160.

The version v3 (not yet out) has an option in the install --git-config-no-abs-path which will default to non absolute paths (githooks.runner, githooks.dialog, alias.hooks).
Version 3 will also have build support for package managers, so when installed with e.g. Nix or any other package-manager we disable updateing functionality (in version 3 updates are never automatically dispatched anymore)
and we also do not use githooks.runner anymore when packaged for a package-manager and the run-wrapper wil search for githooks-runner which needs to be in the path (also when using --git-config-no-abs-path)
The install dir githooks.installDir is however not yet affected and is still in the config with absolute path.

PR #144 should still be tackled to provide you this feature though. Will get merged whe v3 is ready.

@gabyx gabyx closed this as completed Apr 22, 2024
@giggio
Copy link
Author

giggio commented May 2, 2024

@gabyx I just tried the new installer, but there is no option for --git-config-no-abs-path.
Running it with githooks-cli installer --non-interactive changed may .gitconfig:

diff --git a/home/.gitconfig b/home/.gitconfig
index 588c57d..d1bd06d 100644
--- a/home/.gitconfig
+++ b/home/.gitconfig
@@ -65,7 +65,7 @@
   squash = "!f() { git reset --hard $1; git merge --squash HEAD@{1}; git commit; }; f"
   continue = "-c core.editor=true rebase --continue"
   a = add :/
-  hooks = !\"githooks-cli\"
+   hooks = !\"githooks-cli\"
   parse-env-vars = "!f() { \
                      awk '{ \
                        finalstr = $0; \
@@ -119,10 +119,11 @@
 [pack]
   windowMemory = 0
 [githooks]
-  cloneUrl = https://github.com/gabyx/githooks.git
-  cloneBranch = main
-  installMode = manual
-  pathForUseCoreHooksPath = /home/giggio/.githooks/templates/hooks
-  runner = githooks-runner
-  dialog = githooks-dialog
-  maintainedHooks = all
+   cloneUrl = https://github.com/gabyx/githooks.git
+   cloneBranch = main
+   installMode = manual
+   pathForUseCoreHooksPath = /home/giggio/.githooks/templates/hooks
+   runner = githooks-runner
+   dialog = githooks-dialog
+   maintainedHooks = all
+   installDir = /home/giggio/.githooks

I believe this issue should be reopened.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants