Go to file
Johannes Schindelin a7be92acd9 range-diff: use dim/bold cues to improve dual color mode
It *is* a confusing thing to look at a diff of diffs. All too easy is it
to mix up whether the -/+ markers refer to the "inner" or the "outer"
diff, i.e. whether a `+` indicates that a line was added by either the
old or the new diff (or both), or whether the new diff does something
different than the old diff.

To make things easier to process for normal developers, we introduced
the dual color mode which colors the lines according to the commit diff,
i.e. lines that are added by a commit (whether old, new, or both) are
colored in green. In non-dual color mode, the lines would be colored
according to the outer diff: if the old commit added a line, it would be
colored red (because that line addition is only present in the first
commit range that was specified on the command-line, i.e. the "old"
commit, but not in the second commit range, i.e. the "new" commit).

However, this dual color mode is still not making things clear enough,
as we are looking at two levels of diffs, and we still only pick a color
according to *one* of them (the outer diff marker is colored
differently, of course, but in particular with deep indentation, it is
easy to lose track of that outer diff marker's background color).

Therefore, let's add another dimension to the mix. Still use
green/red/normal according to the commit diffs, but now also dim the
lines that were only in the old commit, and use bold face for the lines
that are only in the new commit.

That way, it is much easier not to lose track of, say, when we are
looking at a line that was added in the previous iteration of a patch
series but the new iteration adds a slightly different version: the
obsolete change will be dimmed, the current version of the patch will be
bold.

At least this developer has a much easier time reading the range-diffs
that way.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-08-13 10:44:52 -07:00
.github
…
Documentation range-diff: use dim/bold cues to improve dual color mode 2018-08-13 10:44:52 -07:00
block-sha1
…
builtin range-diff: make --dual-color the default mode 2018-08-13 10:44:52 -07:00
ci Merge branch 'nd/travis-gcc-8' 2018-05-30 14:04:08 +09:00
compat Merge branch 'nd/command-list' 2018-07-24 14:50:50 -07:00
contrib range-diff: make --dual-color the default mode 2018-08-13 10:44:52 -07:00
ewah ewah: delete unused 'rlwit_discharge_empty()' 2018-06-21 09:39:48 -07:00
git-gui
…
gitk-git
…
gitweb
…
mergetools
…
negotiator Merge branch 'jt/fetch-negotiator-skipping' 2018-08-02 15:30:46 -07:00
perl
…
po l10n: ko.po: Update Korean translation 2018-06-19 02:19:42 +09:00
ppc
…
refs Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
sha1collisiondetection@19d97bf5af
…
sha1dc
…
t range-diff: add tests 2018-08-13 10:44:51 -07:00
templates
…
vcs-svn
…
xdiff xdiff/xdiffi.c: remove unneeded function declarations 2018-07-17 11:25:31 -07:00
.clang-format
…
.gitattributes
…
.gitignore Introduce `range-diff` to compare iterations of a topic branch 2018-08-13 10:44:50 -07:00
.gitmodules
…
.mailmap .mailmap: merge different spellings of names 2018-06-29 09:29:44 -07:00
.travis.yml
…
.tsan-suppressions
…
COPYING
…
GIT-VERSION-GEN Prepare to start 2.19 cycle 2018-06-25 13:22:27 -07:00
INSTALL
…
LGPL-2.1
…
Makefile range-diff: first rudimentary implementation 2018-08-13 10:44:50 -07:00
README.md note git-security@googlegroups.com in more places 2018-06-01 09:24:11 +09:00
RelNotes Prepare to start 2.19 cycle 2018-06-25 13:22:27 -07:00
abspath.c
…
aclocal.m4
…
advice.c Merge branch 'ab/checkout-default-remote' 2018-08-02 15:30:41 -07:00
advice.h Merge branch 'ab/checkout-default-remote' 2018-08-02 15:30:41 -07:00
alias.c
…
alias.h
…
alloc.c Merge branch 'sb/object-store-alloc' 2018-06-25 13:22:38 -07:00
alloc.h
…
apply.c Merge branch 'jm/cache-entry-from-mem-pool' 2018-08-02 15:30:43 -07:00
apply.h
…
archive-tar.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
archive-zip.c
…
archive.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
archive.h
…
argv-array.c Merge branch 'ma/unpack-trees-free-msgs' 2018-05-30 21:51:29 +09:00
argv-array.h Merge branch 'ma/unpack-trees-free-msgs' 2018-05-30 21:51:29 +09:00
attr.c
…
attr.h
…
base85.c
…
bisect.c commit: add repository argument to lookup_commit_reference 2018-06-29 10:43:39 -07:00
bisect.h
…
blame.c Merge branch 'jm/cache-entry-from-mem-pool' 2018-08-02 15:30:43 -07:00
blame.h
…
blob.c blob: allow lookup_blob to handle arbitrary repositories 2018-06-29 10:43:39 -07:00
blob.h blob: allow lookup_blob to handle arbitrary repositories 2018-06-29 10:43:39 -07:00
branch.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
branch.h
…
builtin.h Introduce `range-diff` to compare iterations of a topic branch 2018-08-13 10:44:50 -07:00
bulk-checkin.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
bulk-checkin.h
…
bundle.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
bundle.h
…
cache-tree.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
cache-tree.h
…
cache.h Merge branch 'jt/commit-graph-per-object-store' 2018-08-02 15:30:47 -07:00
chdir-notify.c
…
chdir-notify.h
…
check-builtins.sh
…
check-racy.c
…
check_bindir
…
checkout.c checkout & worktree: introduce checkout.defaultRemote 2018-06-11 09:41:02 -07:00
checkout.h checkout: pass the "num_matches" up to callers 2018-06-11 09:41:01 -07:00
color.c Merge branch 'js/use-bug-macro' 2018-05-30 14:04:07 +09:00
color.h range-diff: use dim/bold cues to improve dual color mode 2018-08-13 10:44:52 -07:00
column.c
…
column.h
…
combine-diff.c
…
command-list.txt Introduce `range-diff` to compare iterations of a topic branch 2018-08-13 10:44:50 -07:00
commit-graph.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
commit-graph.h commit-graph: add repo arg to graph readers 2018-07-17 15:47:48 -07:00
commit-slab-decl.h
…
commit-slab-impl.h commit-slabs: remove realloc counter outside of slab struct 2018-06-29 10:43:40 -07:00
commit-slab.h
…
commit.c Merge branch 'jt/commit-graph-per-object-store' 2018-08-02 15:30:47 -07:00
commit.h Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
common-main.c
…
config.c Merge branch 'jt/commit-graph-per-object-store' 2018-08-02 15:30:47 -07:00
config.h Merge branch 'jk/fsck-gitmodules-gently' 2018-08-02 15:30:39 -07:00
config.mak.dev
…
config.mak.in
…
config.mak.uname
…
configure.ac
…
connect.c Merge branch 'nd/command-list' 2018-06-01 15:06:37 +09:00
connect.h fixup! connect.h: avoid forward declaration of an enum 2018-07-09 14:35:39 -07:00
connected.c fetch-pack: write shallow, then check connectivity 2018-07-03 14:57:44 -07:00
connected.h fetch-pack: write shallow, then check connectivity 2018-07-03 14:57:44 -07:00
convert.c Merge branch 'bb/pedantic' 2018-07-24 14:50:47 -07:00
convert.h
…
copy.c
…
credential-cache--daemon.c
…
credential-cache.c
…
credential-store.c
…
credential.c
…
credential.h
…
csum-file.c
…
csum-file.h
…
ctype.c
…
daemon.c
…
date.c
…
decorate.c
…
decorate.h
…
delta.h
…
detect-compiler
…
diff-delta.c
…
diff-lib.c Merge branch 'jk/has-uncommitted-changes-fix' 2018-08-02 15:30:38 -07:00
diff-no-index.c
…
diff.c range-diff: use dim/bold cues to improve dual color mode 2018-08-13 10:44:52 -07:00
diff.h range-diff: use dim/bold cues to improve dual color mode 2018-08-13 10:44:52 -07:00
diffcore-break.c
…
diffcore-delta.c
…
diffcore-order.c
…
diffcore-pickaxe.c
…
diffcore-rename.c
…
diffcore.h
…
dir-iterator.c
…
dir-iterator.h
…
dir.c Merge branch 'tz/exclude-doc-smallfixes' 2018-07-18 12:20:34 -07:00
dir.h Merge branch 'bc/object-id' 2018-05-30 14:04:10 +09:00
editor.c
…
entry.c
…
environment.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
exec-cmd.c
…
exec-cmd.h
…
fast-import.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
fetch-negotiator.c negotiator/skipping: skip commits during fetch 2018-07-16 14:51:12 -07:00
fetch-negotiator.h negotiator/skipping: skip commits during fetch 2018-07-16 14:51:12 -07:00
fetch-object.c fetch-pack: put shallow info in output parameter 2018-06-28 09:33:29 -07:00
fetch-object.h
…
fetch-pack.c Merge branch 'jt/fetch-negotiator-skipping' 2018-08-02 15:30:46 -07:00
fetch-pack.h Merge branch 'jt/fetch-nego-tip' 2018-08-02 15:30:43 -07:00
fmt-merge-msg.h
…
fsck.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
fsck.h
…
fsmonitor.c Merge branch 'jk/snprintf-truncation' 2018-05-30 21:51:28 +09:00
fsmonitor.h
…
generate-cmdlist.sh help: add --config to list all available config 2018-05-29 14:51:28 +09:00
gettext.c
…
gettext.h
…
git-add--interactive.perl Merge branch 'pw/add-p-recount' 2018-06-28 12:53:32 -07:00
git-archimport.perl
…
git-bisect.sh
…
git-compat-util.h Merge branch 'js/use-bug-macro' 2018-05-30 14:04:07 +09:00
git-cvsexportcommit.perl
…
git-cvsimport.perl
…
git-cvsserver.perl
…
git-difftool--helper.sh
…
git-filter-branch.sh Merge branch 'mb/filter-branch-optim' 2018-07-18 12:20:32 -07:00
git-instaweb.sh
…
git-merge-octopus.sh
…
git-merge-one-file.sh
…
git-merge-resolve.sh
…
git-mergetool--lib.sh
…
git-mergetool.sh
…
git-p4.py git-p4: python3: fix octal constants 2018-06-19 09:34:32 -07:00
git-parse-remote.sh
…
git-quiltimport.sh
…
git-rebase--am.sh
…
git-rebase--interactive.sh Merge branch 'ag/rebase-p' 2018-06-25 13:22:39 -07:00
git-rebase--merge.sh Merge branch 'en/rebase-i-microfixes' 2018-07-18 12:20:33 -07:00
git-rebase--preserve-merges.sh git-rebase--preserve-merges: fix formatting of todo help message 2018-07-06 12:09:27 -07:00
git-rebase.sh Merge branch 'en/rebase-consistency' 2018-07-24 14:50:43 -07:00
git-remote-testgit.sh
…
git-request-pull.sh
…
git-send-email.perl Merge branch 'jm/send-email-tls-auth-on-batch' 2018-08-02 15:30:46 -07:00
git-sh-i18n.sh
…
git-sh-setup.sh
…
git-stash.sh
…
git-submodule.sh Merge branch 'sb/submodule-core-worktree' 2018-07-18 12:20:28 -07:00
git-svn.perl
…
git-web--browse.sh
…
git.c Introduce `range-diff` to compare iterations of a topic branch 2018-08-13 10:44:50 -07:00
git.rc
…
gpg-interface.c gpg-interface: make parse_gpg_output static and remove from interface header 2018-07-11 10:05:22 -07:00
gpg-interface.h gpg-interface: make parse_gpg_output static and remove from interface header 2018-07-11 10:05:22 -07:00
graph.c
…
graph.h
…
grep.c Merge branch 'tb/grep-only-matching' 2018-08-02 15:30:44 -07:00
grep.h Merge branch 'tb/grep-only-matching' 2018-08-02 15:30:44 -07:00
hash.h
…
hashmap.c
…
hashmap.h
…
help.c Merge branch 'nd/command-list' 2018-06-01 15:06:37 +09:00
help.h completion: drop the hard coded list of config vars 2018-05-29 14:51:28 +09:00
hex.c hex: switch to using the_hash_algo 2018-07-16 14:27:39 -07:00
http-backend.c tag: add repository argument to deref_tag 2018-06-29 10:43:39 -07:00
http-fetch.c
…
http-push.c tag: add repository argument to deref_tag 2018-06-29 10:43:39 -07:00
http-walker.c
…
http.c Merge branch 'bw/remote-curl-compressed-responses' 2018-05-30 21:51:29 +09:00
http.h Merge branch 'jk/snprintf-truncation' 2018-05-30 21:51:28 +09:00
ident.c
…
imap-send.c
…
iterator.h
…
khash.h
…
kwset.c
…
kwset.h
…
levenshtein.c
…
levenshtein.h
…
line-log.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
line-log.h
…
line-range.c blame: prevent error if range ends past end of file 2018-06-15 10:29:13 -07:00
line-range.h
…
linear-assignment.c linear-assignment: a function to solve least-cost assignment problems 2018-08-13 10:44:50 -07:00
linear-assignment.h linear-assignment: a function to solve least-cost assignment problems 2018-08-13 10:44:50 -07:00
list-objects-filter-options.c list-objects: check if filter is NULL before using 2018-06-12 10:46:56 -07:00
list-objects-filter-options.h
…
list-objects-filter.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
list-objects-filter.h
…
list-objects.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
list-objects.h
…
list.h
…
ll-merge.c
…
ll-merge.h
…
lockfile.c
…
lockfile.h
…
log-tree.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
log-tree.h
…
ls-refs.c
…
ls-refs.h
…
mailinfo.c
…
mailinfo.h
…
mailmap.c
…
mailmap.h
…
match-trees.c
…
mem-pool.c block alloc: add validations around cache_entry lifecyle 2018-07-03 10:58:27 -07:00
mem-pool.h block alloc: add validations around cache_entry lifecyle 2018-07-03 10:58:27 -07:00
merge-blobs.c
…
merge-blobs.h
…
merge-recursive.c Merge branch 'en/dirty-merge-fixes' 2018-08-02 15:30:45 -07:00
merge-recursive.h
…
merge.c Merge branch 'en/dirty-merge-fixes' 2018-08-02 15:30:45 -07:00
mergesort.c
…
mergesort.h
…
name-hash.c
…
notes-cache.c commit: add repository argument to lookup_commit_reference_gently 2018-06-29 10:43:39 -07:00
notes-cache.h
…
notes-merge.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
notes-merge.h
…
notes-utils.c commit: add repository argument to lookup_commit 2018-06-29 10:43:39 -07:00
notes-utils.h
…
notes.c
…
notes.h
…
object-store.h Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
object.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
object.h Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
oidmap.c
…
oidmap.h
…
oidset.c
…
oidset.h
…
pack-bitmap-write.c Merge branch 'jt/remove-pack-bitmap-global' 2018-07-18 12:20:30 -07:00
pack-bitmap.c pack-bitmap: add free function 2018-06-21 12:22:48 -07:00
pack-bitmap.h pack-bitmap: add free function 2018-06-21 12:22:48 -07:00
pack-check.c
…
pack-objects.c Merge branch 'js/use-bug-macro' 2018-05-30 14:04:07 +09:00
pack-objects.h
…
pack-revindex.c
…
pack-revindex.h
…
pack-write.c
…
pack.h
…
packfile.c object: add repository argument to parse_object 2018-06-29 10:43:38 -07:00
packfile.h Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
pager.c Merge branch 'nd/command-list' 2018-06-01 15:06:37 +09:00
parse-options-cb.c commit: add repository argument to lookup_commit_reference 2018-06-29 10:43:39 -07:00
parse-options.c completion: collapse extra --no-.. options 2018-06-11 10:38:10 -07:00
parse-options.h
…
patch-delta.c
…
patch-ids.c
…
patch-ids.h
…
path.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
path.h Merge branch 'bb/pedantic' 2018-07-24 14:50:47 -07:00
pathspec.c
…
pathspec.h
…
pkt-line.c Merge branch 'js/use-bug-macro' 2018-05-30 14:04:07 +09:00
pkt-line.h
…
preload-index.c
…
pretty.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
pretty.h
…
prio-queue.c
…
prio-queue.h
…
progress.c
…
progress.h
…
prompt.c
…
prompt.h
…
protocol.c
…
protocol.h
…
quote.c
…
quote.h
…
range-diff.c range-diff: left-pad patch numbers 2018-08-13 10:44:52 -07:00
range-diff.h range-diff: also show the diff between patches 2018-08-13 10:44:50 -07:00
reachable.c tree: add repository argument to lookup_tree 2018-06-29 10:43:38 -07:00
reachable.h
…
read-cache.c Merge branch 'en/dirty-merge-fixes' 2018-08-02 15:30:45 -07:00
ref-filter.c Merge branch 'jt/commit-graph-per-object-store' 2018-08-02 15:30:47 -07:00
ref-filter.h
…
reflog-walk.c object: add repository argument to parse_object 2018-06-29 10:43:38 -07:00
reflog-walk.h
…
refs.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
refs.h
…
refspec.c Merge branch 'ab/refspec-init-fix' 2018-06-28 12:53:29 -07:00
refspec.h refspec: add back a refspec_item_init() function 2018-06-11 10:11:31 -07:00
remote-curl.c
…
remote-testsvn.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
remote.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
remote.h fetch-pack: implement ref-in-want 2018-06-28 09:33:30 -07:00
replace-object.c
…
replace-object.h
…
repository.c Merge branch 'sb/object-store-alloc' 2018-06-25 13:22:38 -07:00
repository.h Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
rerere.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
rerere.h
…
resolve-undo.c block alloc: add lifecycle APIs for cache_entry structs 2018-07-03 10:58:27 -07:00
resolve-undo.h
…
revision.c Merge branch 'jt/tags-to-promised-blobs-fix' 2018-08-02 15:30:46 -07:00
revision.h Merge branch 'jt/partial-clone-fsck-connectivity' 2018-07-24 14:50:47 -07:00
run-command.c
…
run-command.h
…
send-pack.c
…
send-pack.h
…
sequencer.c Merge branch 'bc/sequencer-export-work-tree-as-well' 2018-08-02 15:30:45 -07:00
sequencer.h Merge branch 'js/sequencer-and-root-commits' 2018-05-30 14:04:04 +09:00
serve.c
…
serve.h
…
server-info.c tag: add repository argument to deref_tag 2018-06-29 10:43:39 -07:00
setup.c
…
sh-i18n--envsubst.c
…
sha1-array.c
…
sha1-array.h
…
sha1-file.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
sha1-lookup.c
…
sha1-lookup.h
…
sha1-name.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
sha1dc_git.c
…
sha1dc_git.h
…
shallow.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
shell.c Merge branch 'nd/command-list' 2018-06-01 15:06:37 +09:00
shortlog.h
…
sideband.c
…
sideband.h
…
sigchain.c
…
sigchain.h
…
split-index.c block alloc: allocate cache entries from mem_pool 2018-07-03 10:58:27 -07:00
split-index.h
…
strbuf.c strbuf: allocate space with GIT_MAX_HEXSZ 2018-07-16 14:27:39 -07:00
strbuf.h
…
streaming.c
…
streaming.h
…
string-list.c string-list.c: avoid conversion from void * to function pointer 2018-07-09 14:37:50 -07:00
string-list.h
…
sub-process.c
…
sub-process.h
…
submodule-config.c Merge branch 'jk/fsck-gitmodules-gently' 2018-08-02 15:30:39 -07:00
submodule-config.h submodule-config: make 'config_from_gitmodules' private 2018-06-26 12:56:12 -07:00
submodule.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
submodule.h submodule: unset core.worktree if no working tree is present 2018-06-14 14:13:46 -07:00
symlinks.c
…
tag.c Merge branch 'jt/tags-to-promised-blobs-fix' 2018-08-02 15:30:46 -07:00
tag.h tag.c: allow deref_tag to handle arbitrary repositories 2018-06-29 10:43:40 -07:00
tar.h
…
tempfile.c
…
tempfile.h
…
thread-utils.c
…
thread-utils.h
…
tmp-objdir.c
…
tmp-objdir.h
…
trace.c
…
trace.h
…
trailer.c
…
trailer.h
…
transport-helper.c Merge branch 'jt/fetch-nego-tip' 2018-08-02 15:30:43 -07:00
transport-internal.h fetch-pack: put shallow info in output parameter 2018-06-28 09:33:29 -07:00
transport.c Merge branch 'jt/fetch-nego-tip' 2018-08-02 15:30:43 -07:00
transport.h Merge branch 'jt/fetch-nego-tip' 2018-08-02 15:30:43 -07:00
tree-diff.c
…
tree-walk.c Merge branch 'bc/object-id' 2018-08-02 15:30:39 -07:00
tree-walk.h
…
tree.c Merge branch 'jm/cache-entry-from-mem-pool' 2018-08-02 15:30:43 -07:00
tree.h tree: allow lookup_tree to handle arbitrary repositories 2018-06-29 10:43:39 -07:00
unicode-width.h unicode: update the width tables to Unicode 11 2018-07-09 14:02:51 -07:00
unimplemented.sh
…
unix-socket.c
…
unix-socket.h
…
unpack-trees.c Merge branch 'jm/cache-entry-from-mem-pool' 2018-08-02 15:30:43 -07:00
unpack-trees.h
…
upload-pack.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
upload-pack.h
…
url.c
…
url.h
…
urlmatch.c
…
urlmatch.h
…
usage.c Merge branch 'jk/snprintf-truncation' 2018-05-30 21:51:28 +09:00
userdiff.c userdiff: support new keywords in PHP hunk header 2018-07-06 14:59:28 -07:00
userdiff.h
…
utf8.c utf8.c: avoid char overflow 2018-07-09 14:38:12 -07:00
utf8.h Sync with Git 2.17.1 2018-05-29 17:10:05 +09:00
varint.c
…
varint.h
…
version.c
…
version.h
…
versioncmp.c
…
walker.c Merge branch 'sb/object-store-grafts' 2018-07-18 12:20:28 -07:00
walker.h
…
wildmatch.c
…
wildmatch.h
…
worktree.c
…
worktree.h
…
wrap-for-bin.sh
…
wrapper.c
…
write-or-die.c
…
ws.c
…
wt-status.c Merge branch 'sb/object-store-lookup' 2018-08-02 15:30:42 -07:00
wt-status.h
…
xdiff-interface.c
…
xdiff-interface.h
…
zlib.c
…

README.md

Git - fast, scalable, distributed revision control system

Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.

Git is an Open Source project covered by the GNU General Public License version 2 (some parts of it are under different licenses, compatible with the GPLv2). It was originally written by Linus Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

Many Git online resources are accessible from https://git-scm.com/ including full documentation and Git related tools.

See Documentation/gittutorial.txt to get started, then see Documentation/giteveryday.txt for a useful minimum set of commands, and Documentation/git-.txt for documentation of each command. If git has been correctly installed, then the tutorial can also be read with man gittutorial or git help tutorial, and the documentation of each command with man git-<commandname> or git help <commandname>.

CVS users may also want to read Documentation/gitcvs-migration.txt (man gitcvs-migration or git help cvs-migration if git is installed).

The user discussion and development of Git take place on the Git mailing list -- everyone is welcome to post bug reports, feature requests, comments and patches to git@vger.kernel.org (read Documentation/SubmittingPatches for instructions on patch submission). To subscribe to the list, send an email with just "subscribe git" in the body to majordomo@vger.kernel.org. The mailing list archives are available at https://public-inbox.org/git/, http://marc.info/?l=git and other archival sites.

Issues which are security relevant should be disclosed privately to the Git Security mailing list git-security@googlegroups.com.

The maintainer frequently sends the "What's cooking" reports that list the current status of various development topics to the mailing list. The discussion following them give a good reference for project status, development direction and remaining tasks.

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your mood):

  • random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
  • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
  • "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
  • "goddamn idiotic truckload of sh*t": when it breaks