Git tips & tricks¶
Git configuration tweaks¶
Ksconf as exteral difftool¶
Setup ksconf as an external difftool provider for git.
Edit ~/.gitconfig
and add the following entires:
[difftool "ksconf"]
cmd = "ksconf --force-color diff \"$LOCAL\" \"$REMOTE\" | less -R"
[difftool]
prompt = false
[alias]
ksdiff = "difftool --tool=ksconf"
Now you can run this new git
alias to compare files in your directory using the ksconf diff
feature instead of the default textual diff that git provides.
git ksdiff props.conf
Stanza aware textual diffs¶
Make git diff
show the ‘stanza’ on the @@
output lines.
Note
How does git know that?
Ever wonder how git diff
is able to show you the name of the function or method where changes
were made? This works for many programming languages out of the box. If you’ve ever spend much
time looking at diffs that additional context is invaluable. As it turns out, this is
customizable by adding a stanza matching regular expression with a file pattern match.
Simply add the following settings to your git configuration:
[diff "conf"]
xfuncname = "^(\\[.*\\])$"
Then register this new ability with specific file patterns using git’s attributes
feature.
Edit ~/.config/git/attributes
and add:
*.conf diff=conf
*.meta diff=conf
Note
Didn’t work as expected?
Be aware that your location for your global-level attributes may be in a different location. In any case, you can use the following commands to test if the settings have been applied correctly.
git check-attr -a -- *.conf
Test to make sure the xfuncname
attribute was set as expected:
git config diff.conf.xfuncname
Grandfather Paradox¶
The KSCONF Splunk app breaks it’s designed paradigm (not in a good way). Ksconf was designed to be the thing that manages all your other apps, so by deploying ksconf as an app itself, we open up the possiblity that ksconf could upgrade it self or deploy itself, or manage itself. Basically it could cut off the limb that it’s standing on. So practically this can get messy, especially if you’re on Windows where file locking is also likely to cause issues for you.
So sure, if you want to be picky, “Grandfather paradox” is probably the wrong annalogy. Pull requests welcome.