1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# A user gitconfig built to break scripts that shell out to git.
#
# CI runs the whole test suite with `GIT_CONFIG_GLOBAL` pointing here, so every
# git-loom invocation meets settings real users have: output shaped differently,
# rebase and commit behavior altered, the editor refusing to run. Nothing here
# is exotic — each key is one someone sets on purpose.
#
# Add a key whenever a config setting breaks git-loom, so the fix stays fixed.
#
# Deliberately absent: `feature.experimental`. It makes `git init` pick the
# reftable backend, and libgit2 cannot open such a repository at all
# ("unsupported extension name extensions.refstorage"), so every test would fail
# for a reason that has nothing to do with config shape.
# Neither may ever be invoked: every git-loom command that commits has to
# suppress the editor itself.
# Renaming the comment character changes the rebase todo git writes and
# reads back.
# Feeds the full diff into the commit message buffer, and to any
# `commit-msg` hook reading it.
# Escape codes in every git output, tty or not. `color.diff` is set on its
# own because it beats `color.ui`: forcing the latter off is not enough.
# These four drop or rename the `a/`…`b/` prefixes every patch parser
# expects.
# Replaces the patch with whatever a user's diff tool prints.
# Reorders and annotates hunks.
# Zero-context hunks: `git apply` refuses them without `--unidiff-zero`.
# Rejects any patch that adds trailing whitespace.
# Three-way conflict markers: an extra `|||||||` section in every
# conflicted file.
# Makes checkout, reset and switch update the submodule working trees
# along with the branch.