Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
gittips [2021/06/03 08:29] – Init LiWenHsugittips [2023/03/13 14:24] (current) – Add a helper script for creating worktree for ports quarterly branch LiWenHsu
Line 1: Line 1:
 Some Git Tips useful for contributors and developers Some Git Tips useful for contributors and developers
 +
 +Here we put some tips and cheatsheets, the full documentations are at [[https://docs.freebsd.org/en/articles/committers-guide/#git-primer|Git Primer]] in Committer's Guide and [[https://docs.freebsd.org/en/books/handbook/mirrors/#git|Using Git]] in Handbook, which is recommended to read and editing is always welcomed.
 +
 +==== .gitconfig ====
 +
 +There are two common places for git config, global (~/.gitconfig) and project wise (/path/to/the/project/.git/config).
 +
 +You can set your preferred name and email for different projects:
 +
 +<code>
 +[user]
 +        name = 
 +        email = 
 +</code>
 +
 +Please note, that email set in the global user config (~/.gitconfig) will get used in all repositories that do not set per repo value.
 +
 +==== format ====
 +
 +To show both for author and committer information for checking the credit is given to the submitter, set fuller format for ''%%git log%%'' and ''%%git show%%''
 +
 +<code>
 +[format]
 +        pretty = fuller
 +</code>
 +
 +==== dealing with pgp keys ====
 +
 +When updating pgp keys in the handbook, it's helpful to be able to confirm what actually changed to your key before committing.
 +
 +Consider adding this stanza to your $HOME/.gitconfig:
 +
 +<code>
 +[diff "gpg"]
 + textconv = "f(){ gpg --list-packets < \"$1\" | grep -v \"^# off=\"; }; f"
 +</code>
 +
 +and this to /path/to/your/doc-repo-clone/.git/info/attributes:
 +
 +<code>
 +*.key diff=gpg
 +</code>
 +
 +When you now "git diff" or "git show" in the doc repo, the base64 encoded blobs will be decoded to (slightly) more readable PGP packets.
 +
 +==== rewriting history ====
 +
 +To rewrite history, including separating out components from %%FreeBSD%% src, see the examples in [[git-filter]].
 +
 +==== commit count (replacement of revision number) ====
 +
 +<code>
 +git rev-list --first-parent --count HEAD
 +</code>
 +
 +==== Show your diff while writing commit msg ====
 +
 +If you want to see your uncommitted diff while writing a commit message, either run:
 +
 +<code>
 +git commit --verbose
 +</code>
 +
 +…or configure it accordingly:
 +
 +<code>
 +[commit]
 +        verbose = true
 +</code>
 +
 +==== Show (long enough) hash ====
 +
 +<code>
 +git rev-parse --short <long hash>
 +</code>
 +
 +==== Worktree ====
 +
 +It's handy to tracking multiple branches simultaneously with [[https://git-scm.com/docs/git-worktree|git-worktree(1)]]
 +
 +<code>
 +cd freebsd-ports; git worktree add -b 2021Q3 ../freebsd-ports-2021Q3 freebsd/2021Q3
 +cd freebsd-src; git worktree add -b stable/13 ../freebsd-src-13 freebsd/stable/13
 +</code>
 +
 +=== Helper Scripts ===
 +ports
 +
 +<code>
 +#!/bin/sh
 +
 +year=$(date +"%Y")
 +month=$(date +"%m")
 +quarter=$(((month-1)/3+1))
 +
 +branch="${year}Q${quarter}"
 +
 +git worktree add -b ${branch} ../freebsd-ports-${branch} freebsd/${branch}
 +</code>
  
  • gittips.1622708989.txt.gz
  • Last modified: 2021/06/03 08:29
  • by LiWenHsu