dotfiles/vcs
Marty Oehme 5ab95c724f
jj: Rework jj bookmark main alias
Changed into a function which takes the revision to set the bookmark to
as an argument. This should work without interfering much since the
bookmark name that the `bookmark set` function _usually_ takes as
argument is already given by the alias (always 'main') and thus we do
not have to manually provide other arguments.

It default to the current working copy just like the command and
otherwise can point to any change.
2025-02-22 19:35:37 +01:00
..
git/config git: Add pr alias which fetches a specific github pull request 2025-02-14 10:47:53 +01:00
gitignore vcs: Restructure vcs module 2024-09-18 17:38:44 +02:00
jj/config jj: Rework jj bookmark main alias 2025-02-22 19:35:37 +01:00
README.md vcs: Restructure vcs module 2024-09-18 17:38:44 +02:00

Version control software module

git - a distributed version control system jujutsu - a change-based version control system

What's in this module

[[TOC]]

Global vcs settings

This are probably the first things that need to be customized, since it points to a different identity for each git user. I sign all my commits by default, so take out the corresponding lines if you don't, or exchange it with your gpg key. Similarly for jujutsu, change the identity and remove the lines concerning gpg signing if you don't use it.

Git will rewrite any remotes using http(s) to use the ssh notation for pushes to github and gitlab so that, even if you set up the repository using an https url you can utilize your usual ssh key for pushing.

Finally, the configuration makes use of a custom pager called dsf which is also contained in this module. It tries to use diff-so-fancy if that is installed on the path, otherwise uses git's internal diff prettifier. If nothing exists it falls back to the standard output. You can move between changed files in diffs with n/N.

Otherwise, the git config is prepared to handle lfs repositories, and it has an assortment of smaller quality of life changes, though nothing major.

Basic git command aliases

This module contains a heap of aliases to every-day git commands. Most of them follow a two-to-three letter combination of things to do which corresponds to the mnemonic of the longer git command. As such, they are mostly similar to those found in the Oh My Zsh git plugin. Examples of some common aliases are alias ga=git add, alias gst=git status, alias gp=git push, alias gl=git pull.

Two aliases might be of note: gi allows quickly generating a gitignore file for the current directory, using the included gitignore script. And gll quickly pulls up the contents of the last commit. (ll since gl already pulls from the remote)

Gitignore generation script

Adds a gitignore script which pulls relevant .gitignore lines from gitignore.io and sends them to standard out, or creates a .gitignore file in the current directory.

asciicast

To show usage of the script run gitignore -h. It is fully equipped with zsh auto completions, which will pull a list of all available ignore modules from the website to complete with.

It can alternatively be run through git itself by invoking git ignore, which will always generate a .gitignore file in the current directory.

When fzf is installed invoke the script without any arguments to generate a fzf-searchable list of git definitions to create. Select multiple definitions with .