From bf12093191f8a4ac9f248a1730b0784a7972d171 Mon Sep 17 00:00:00 2001 From: Sjors Provoost Date: Tue, 19 Feb 2019 16:35:56 +0100 Subject: [PATCH 1/3] [doc] productivity: fix broken link --- doc/productivity.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/productivity.md b/doc/productivity.md index 862017290..f94bf8da6 100644 --- a/doc/productivity.md +++ b/doc/productivity.md @@ -76,7 +76,7 @@ Writing code ### Format C/C++/Protobuf diffs with `clang-format-diff.py` -See [contrib/devtools/README.md](contrib/devtools/README.md#clang-format-diff.py). +See [contrib/devtools/README.md](/contrib/devtools/README.md#clang-format-diff.py). ### Format Python diffs with `yapf-diff.py` From 3a21905a4ef7d98c8762ec89affa2667e197a118 Mon Sep 17 00:00:00 2001 From: Sjors Provoost Date: Tue, 19 Feb 2019 17:08:01 +0100 Subject: [PATCH 2/3] [doc] devtools: mention clang-format dependency --- contrib/devtools/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/devtools/README.md b/contrib/devtools/README.md index 6ee65f40b..49e6c3cb6 100644 --- a/contrib/devtools/README.md +++ b/contrib/devtools/README.md @@ -7,6 +7,8 @@ clang-format-diff.py A script to format unified git diffs according to [.clang-format](../../src/.clang-format). +Requires `clang-format`, installed e.g. via `brew install clang-format` on macOS. + For instance, to format the last commit with 0 lines of context, the script should be called from the git root folder as follows. From ff7f31e07dff676a3bb400e98e0e365eee5aace9 Mon Sep 17 00:00:00 2001 From: Sjors Provoost Date: Tue, 19 Feb 2019 17:15:38 +0100 Subject: [PATCH 3/3] [doc] productivity: more advanced git range-diff --- doc/productivity.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/productivity.md b/doc/productivity.md index f94bf8da6..e0df55894 100644 --- a/doc/productivity.md +++ b/doc/productivity.md @@ -136,7 +136,7 @@ This will add an `upstream-pull` remote to your git repository, which can be fet ### Diff the diffs with `git range-diff` -It is very common for contributors to rebase their pull requests, or make changes to commits (perhaps in response to review) that are not at the head of their branch. This poses a problem for reviewers as when the contributor force pushes, the reviewer is no longer sure that his previous reviews of commits are still valid (as the commit hashes can now be different even though the diff is semantically the same). `git range-diff` can help solve this problem by diffing the diffs. +It is very common for contributors to rebase their pull requests, or make changes to commits (perhaps in response to review) that are not at the head of their branch. This poses a problem for reviewers as when the contributor force pushes, the reviewer is no longer sure that his previous reviews of commits are still valid (as the commit hashes can now be different even though the diff is semantically the same). [git range-diff](https://git-scm.com/docs/git-range-diff) (Git >= 2.19) can help solve this problem by diffing the diffs. For example, to identify the differences between your previously reviewed diffs P1-5, and the new diffs P1-2,N3-4 as illustrated below: ``` @@ -152,7 +152,19 @@ You can do: git range-diff master previously-reviewed-head new-head ``` -Note that `git range-diff` also work for rebases. +Note that `git range-diff` also work for rebases: + +``` + P1--P2--P3--P4--P5 <-- previously-reviewed-head + / +...--m--m1--m2--m3 <-- master + \ + P1--P2--N3--N4 <-- new-head (with P3 modified, P4 & P5 squashed) + +PREV=P5 N=4 && git range-diff `git merge-base --all HEAD $PREV`...$PREV HEAD~$N...HEAD +``` + +Where `P5` is the commit you last reviewed and `4` is the number of commits in the new version. -----