git-commit-vandalism/builtin
Jeff King 91229834c2 blame: fix alignment with --abbrev=40
The blame command internally adds 1 to any requested sha1
abbreviation length, and then subtracts it when outputting a
boundary commit. This lets regular and boundary sha1s line
up visually, but it misses one corner case.

When the requested length is 40, we bump the value to 41.
But since we only have 40 characters, that's all we can show
(fortunately the truncation is done by a printf precision
field, so it never tries to read past the end of the
buffer).  So a normal sha1 shows 40 hex characters, and a
boundary sha1 shows "^" plus 40 hex characters. The result
is misaligned.

The "-l" option to show long sha1s gets around this by
skipping the "abbrev" variable entirely and just always
using GIT_SHA1_HEXSZ.  This avoids the "+1" issue, but it
does mean that boundary commits only have 39 characters
printed.  This is somewhat odd, but it does look good
visually: the results are aligned and left-justified. The
alternative would be to allocate an extra column that would
contain either an extra space or the "^" boundary marker.

As this is by definition the human-readable view, it's
probably not that big a deal either way (and of course
--porcelain, etc, correctly produce correct 40-hex sha1s).
But for consistency, this patch teaches --abbrev=40 to
produce the same output as "-l" (always left-aligned, with
40-hex for normal sha1s, and "^" plus 39-hex for
boundaries).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-01-07 19:34:54 -08:00
..
add.c add: modify already added files when --chmod is given 2016-09-15 12:13:54 -07:00
am.c Merge branch 'jc/am-read-author-file' into maint 2016-11-29 13:27:53 -08:00
annotate.c
apply.c Merge branch 'va/i18n-even-more' 2016-07-13 11:24:10 -07:00
archive.c
bisect--helper.c
blame.c blame: fix alignment with --abbrev=40 2017-01-07 19:34:54 -08:00
branch.c Merge branch 'jk/create-branch-remove-unused-param' into maint 2016-11-29 13:28:02 -08:00
bundle.c
cat-file.c cat-file: put spaces around pipes in usage string 2016-09-08 12:16:38 -07:00
check-attr.c give "nbuf" strbuf a more meaningful name 2016-02-01 13:43:02 -08:00
check-ignore.c give "nbuf" strbuf a more meaningful name 2016-02-01 13:43:02 -08:00
check-mailmap.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
check-ref-format.c use xmallocz to avoid size arithmetic 2016-02-22 14:51:09 -08:00
checkout-index.c checkout-index: disallow "--no-stage" option 2016-02-01 13:43:49 -08:00
checkout.c Merge branch 'jk/create-branch-remove-unused-param' into maint 2016-11-29 13:28:02 -08:00
clean.c Merge branch 'jk/tighten-alloc' 2016-02-26 13:37:16 -08:00
clone.c Merge branch 'jk/clone-copy-alternates-fix' into maint 2016-10-28 09:01:14 -07:00
column.c column: read lines with strbuf_getline() 2016-01-15 10:35:07 -08:00
commit-tree.c Merge branch 'jc/commit-tree-ignore-commit-gpgsign' 2016-05-13 13:18:27 -07:00
commit.c Merge branch 'rs/commit-pptr-simplify' into maint 2016-11-29 13:27:59 -08:00
config.c Merge branch 'js/commit-slab-decl-fix' 2016-08-10 12:33:20 -07:00
count-objects.c
credential.c
describe.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
diff-files.c diff: run arguments through precompose_argv 2016-05-13 14:35:49 -07:00
diff-index.c diff: run arguments through precompose_argv 2016-05-13 14:35:49 -07:00
diff-tree.c Merge branch 'ar/diff-args-osx-precompose' into maint 2016-06-06 14:27:35 -07:00
diff.c Merge branch 'ar/diff-args-osx-precompose' into maint 2016-06-06 14:27:35 -07:00
fast-export.c diff: convert struct diff_filespec to struct object_id 2016-06-28 11:39:02 -07:00
fetch-pack.c fetch-pack: fix object_id of exact sha1 2016-03-01 11:19:19 -08:00
fetch.c Merge branch 'jk/fetch-quick-tag-following' into maint 2016-10-28 09:01:17 -07:00
fmt-merge-msg.c use strbuf_addstr() for adding constant strings to a strbuf, part 2 2016-09-15 12:23:38 -07:00
for-each-ref.c ref-filter: add option to match literal pattern 2015-09-17 10:02:49 -07:00
fsck.c Merge branch 'nd/pack-ofs-4gb-limit' into maint 2016-08-08 14:21:36 -07:00
gc.c Merge branch 'jk/reduce-gc-aggressive-depth' into maint 2016-09-29 16:49:42 -07:00
get-tar-commit-id.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
grep.c Merge branch 'nd/ita-cleanup' into maint 2016-07-28 11:25:51 -07:00
hash-object.c Merge branch 'jk/options-cleanup' 2016-02-10 14:20:08 -08:00
help.c Merge branch 'js/no-html-bypass-on-windows' into maint 2016-09-08 21:35:55 -07:00
index-pack.c Merge branch 'jk/push-progress' 2016-08-03 15:10:28 -07:00
init-db.c i18n: init-db: join message pieces 2016-06-17 15:46:10 -07:00
interpret-trailers.c Merge branch 'jk/parseopt-string-list' into jk/string-list-static-init 2016-06-13 10:37:48 -07:00
log.c format-patch: show base info before email signature 2016-09-15 10:07:10 -07:00
ls-files.c die("bug"): report bugs consistently 2016-07-26 11:13:44 -07:00
ls-remote.c ls-remote: add support for showing symrefs 2016-01-19 10:07:56 -08:00
ls-tree.c convert trivial sprintf / strcpy calls to xsnprintf 2015-09-25 10:18:18 -07:00
mailinfo.c mailinfo: libify 2015-10-21 15:59:34 -07:00
mailsplit.c mailsplit: support unescaping mboxrd messages 2016-06-06 11:14:43 -07:00
merge-base.c merge-base: handle --fork-point without reflog 2016-10-12 14:30:16 -07:00
merge-file.c builtin/merge-file.c: use error_errno() 2016-05-09 12:29:08 -07:00
merge-index.c use sha1_to_hex_r() instead of strcpy 2015-10-05 11:08:05 -07:00
merge-ours.c
merge-recursive.c merge-recursive: convert merge_recursive_generic() to object_id 2016-06-28 11:39:02 -07:00
merge-tree.c struct name_entry: use struct object_id instead of unsigned char sha1[20] 2016-04-25 14:23:42 -07:00
merge.c use strbuf_addstr() for adding constant strings to a strbuf, part 2 2016-09-15 12:23:38 -07:00
mktag.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
mktree.c Merge branch 'jk/tighten-alloc' 2016-02-26 13:37:16 -08:00
mv.c Merge branch 'rs/copy-array' into maint 2016-10-11 14:18:32 -07:00
name-rev.c Merge branch 'js/name-rev-use-oldest-ref' into maint 2016-05-31 14:08:26 -07:00
notes.c i18n: notes: mark comment for translation 2016-07-28 09:09:18 -07:00
pack-objects.c Merge branch 'jk/pack-tag-of-tag' into maint 2016-10-03 13:22:13 -07:00
pack-redundant.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
pack-refs.c
patch-id.c Merge branch 'rs/patch-id-use-skip-prefix' 2016-06-03 14:38:03 -07:00
prune-packed.c
prune.c Merge branch 'jk/repository-extension' into maint 2015-11-03 15:32:25 -08:00
pull.c Merge branch 'va/i18n-even-more' 2016-07-13 11:24:10 -07:00
push.c push: accept push options 2016-07-14 15:50:41 -07:00
read-tree.c convert trivial sprintf / strcpy calls to xsnprintf 2015-09-25 10:18:18 -07:00
receive-pack.c Merge branch 'jk/tighten-alloc' into maint 2016-09-08 21:36:00 -07:00
reflog.c struct name_entry: use struct object_id instead of unsigned char sha1[20] 2016-04-25 14:23:42 -07:00
remote-ext.c typofix: assorted typofixes in comments, documentation and messages 2016-05-06 13:16:37 -07:00
remote-fd.c
remote.c Merge branch 'mh/ref-iterators' 2016-07-25 14:13:33 -07:00
repack.c Merge branch 'va/i18n-even-more' 2016-07-13 11:24:10 -07:00
replace.c Merge branch 'js/replace-edit-use-editor-configuration' into maint 2016-05-06 14:53:24 -07:00
rerere.c Sync with 2.6.1 2015-10-05 13:20:08 -07:00
reset.c Merge branch 'js/reset-usage' into maint 2016-10-28 09:01:22 -07:00
rev-list.c rev-list: add optional progress reporting 2016-07-20 12:10:44 -07:00
rev-parse.c use strbuf_addstr() for adding constant strings to a strbuf 2016-08-01 13:42:10 -07:00
revert.c parse_options: allocate a new array when concatenating 2016-07-06 10:11:08 -07:00
rm.c Merge branch 'rs/rm-strbuf-optim' into maint 2016-08-10 11:55:24 -07:00
send-pack.c Merge branch 'sk/send-pack-all-fix' into maint 2016-04-29 14:15:57 -07:00
shortlog.c Merge branch 'js/log-to-diffopt-file' 2016-07-19 13:22:15 -07:00
show-branch.c Merge branch 'rs/show-branch-argv-array' into maint 2015-12-11 11:14:14 -08:00
show-ref.c show-ref: stop using PARSE_OPT_NO_INTERNAL_HELP 2015-11-20 08:02:07 -05:00
stripspace.c stripspace: call U+0020 a "space" instead of a "blank" 2016-01-29 16:02:34 -08:00
submodule--helper.c use strbuf_addstr() instead of strbuf_addf() with "%s", part 2 2016-09-27 14:02:40 -07:00
symbolic-ref.c symbolic-ref -d: do not allow removal of HEAD 2016-09-02 09:01:38 -07:00
tag.c Merge branch 'st/verify-tag' 2016-04-29 12:59:09 -07:00
unpack-file.c convert trivial sprintf / strcpy calls to xsnprintf 2015-09-25 10:18:18 -07:00
unpack-objects.c coccinelle: convert hashcpy() with null_sha1 to hashclr() 2016-06-28 11:39:02 -07:00
update-index.c Merge branch 'tg/add-chmod+x-fix' into maint 2016-09-29 16:49:47 -07:00
update-ref.c
update-server-info.c
upload-archive.c builtin/upload-archive.c: use error_errno() 2016-05-09 12:29:08 -07:00
var.c
verify-commit.c
verify-pack.c
verify-tag.c verify-tag: move tag verification code to tag.c 2016-04-22 14:06:46 -07:00
worktree.c worktree: honor configuration variables 2016-09-27 10:51:33 -07:00
write-tree.c i18n: write-tree: mark parseopt strings for translation 2012-08-22 10:58:29 -07:00