git-commit-vandalism/builtin
Nguyễn Thái Ngọc Duy 0231ae71d3 diff: turn --ita-invisible-in-index on by default
Due to the implementation detail of intent-to-add entries, the current
"git diff" (i.e. no treeish or --cached argument) would show the
changes in the i-t-a file, but it does not mark the file as new, while
"diff --cached" would mark the file as new while showing its content
as empty.

     $ git diff                     | $ diff --cached
    --------------------------------|-------------------------------
     diff --git a/new b/new         | diff --git a/new b/new
     index e69de29..5ad28e2 100644  | new file mode 100644
     --- a/new                      | index 0000000..e69de29
     +++ b/new                      |
     @@ -0,0 +1 @@                  |
     +haha                          |

One evidence of the current output being wrong is that, the output
from "git diff" (with ita entries) cannot be applied because it
assumes empty files exist before applying.

Turning on --ita-invisible-in-index [1] [2] would fix this. The result
is "new file" line moving from "git diff --cached" to "git diff".

     $ git diff                     | $ diff --cached
    --------------------------------|-------------------------------
     diff --git a/new b/new         |
     new file mode 100644           |
     index 0000000..5ad28e2         |
     --- /dev/null                  |
     +++ b/new                      |
     @@ -0,0 +1 @@                  |
     +haha                          |

This option is on by default in git-status [1] but we need more fixup
in rename detection code [3]. Luckily we don't need to do anything
else for the rename detection code in diff.c (wt-status.c uses a
customized one).

[1] 425a28e0a4 (diff-lib: allow ita entries treated as "not yet exist
    in index" - 2016-10-24)
[2] b42b451919 (diff: add --ita-[in]visible-in-index - 2016-10-24)
[3] bc3dca07f4 (Merge branch 'nd/ita-wt-renames-in-status' - 2018-01-23)

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-05-29 12:38:49 +09:00
..
add.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
am.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
annotate.c
apply.c apply: move lockfile into apply_state 2017-10-06 10:07:18 +09:00
archive.c correct error messages for NULL packet_read_line() 2018-02-08 12:37:30 -08:00
bisect--helper.c bisect: mention "view" as an alternative to "visualize" 2017-11-13 10:51:14 +09:00
blame.c Merge branch 'ps/contains-id-error-message' 2018-04-10 16:28:20 +09:00
branch.c Merge branch 'ot/libify-get-ref-atom-value' 2018-05-08 15:59:18 +09:00
bundle.c
cat-file.c sha1_file: convert read_sha1_file to struct object_id 2018-03-14 09:23:50 -07:00
check-attr.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
check-ignore.c check-ignore: fix mix of directories and other file types 2018-02-12 13:09:35 -08:00
check-mailmap.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
check-ref-format.c Merge branch 'jc/check-ref-format-oor' into maint 2017-11-15 12:04:57 +09:00
checkout-index.c parse-options: let OPT__FORCE take optional flags argument 2018-02-09 10:24:50 -08:00
checkout.c Merge branch 'bc/object-id' 2018-04-10 08:25:45 +09:00
clean.c completion: use __gitcomp_builtin in _git_clean 2018-02-09 10:24:50 -08:00
clone.c Merge branch 'bw/protocol-v2' 2018-05-08 15:59:16 +09:00
column.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
commit-graph.c commit-graph: implement "--append" option 2018-04-11 10:43:02 +09:00
commit-tree.c sha1_file: convert assert_sha1_type to object_id 2018-03-14 09:23:49 -07:00
commit.c Merge branch 'bw/commit-partial-from-subdirectory-fix' 2018-04-25 13:28:53 +09:00
config.c builtin/config: introduce color type specifier 2018-04-23 22:52:20 +09:00
count-objects.c packfile: keep prepare_packed_git() private 2018-03-26 10:07:43 -07:00
credential.c credential: handle invalid arguments earlier 2017-05-30 14:45:03 +09:00
describe.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
diff-files.c submodule: remove gitmodules_config 2017-08-03 13:11:02 -07:00
diff-index.c Merge branch 'ma/builtin-unleak' 2017-10-07 16:27:55 +09:00
diff-tree.c object: rename function 'typename' to 'type_name' 2018-02-14 13:10:05 -08:00
diff.c diff: turn --ita-invisible-in-index on by default 2018-05-29 12:38:49 +09:00
difftool.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
fast-export.c Merge branch 'ma/fast-export-skip-merge-fix' 2018-05-08 15:59:33 +09:00
fetch-pack.c Merge branch 'bw/protocol-v2' 2018-05-08 15:59:16 +09:00
fetch.c Merge branch 'bw/protocol-v2' 2018-05-08 15:59:16 +09:00
fmt-merge-msg.c sha1_file: convert read_sha1_file to struct object_id 2018-03-14 09:23:50 -07:00
for-each-ref.c provide --color option for all ref-filter users 2017-10-04 11:35:29 +09:00
fsck.c Merge branch 'sb/packfiles-in-repository' 2018-04-11 13:09:55 +09:00
gc.c Merge branch 'jc/parseopt-expiry-errors' 2018-05-08 15:59:33 +09:00
get-tar-commit-id.c distinguish error versus short read from read_in_full() 2017-09-27 15:45:24 +09:00
grep.c Merge branch 'sb/submodule-move-nested' 2018-05-08 15:59:17 +09:00
hash-object.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
help.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
index-pack.c Merge branch 'ds/commit-graph' 2018-05-08 15:59:20 +09:00
init-db.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
interpret-trailers.c Merge branch 'jk/trailers-parse' 2017-08-26 22:55:04 -07:00
log.c sha1_file: convert read_sha1_file to struct object_id 2018-03-14 09:23:50 -07:00
ls-files.c Convert find_unique_abbrev* to struct object_id 2018-03-14 09:23:48 -07:00
ls-remote.c Merge branch 'hn/sort-ls-remote' 2018-05-08 15:59:29 +09:00
ls-tree.c sha1_file: convert sha1_object_info* to object_id 2018-03-14 09:23:49 -07:00
mailinfo.c
mailsplit.c mailinfo & mailsplit: check for EOF while parsing 2017-05-08 12:18:19 +09:00
merge-base.c Merge branch 'ma/reduce-heads-leakfix' 2017-11-15 12:14:32 +09:00
merge-file.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
merge-index.c
merge-ours.c Merge branch 'bw/diff-opt-impl-to-bitfields' 2017-11-09 14:31:27 +09:00
merge-recursive.c
merge-tree.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
merge.c Merge branch 'sb/object-store' 2018-04-11 13:09:55 +09:00
mktag.c replace-object: add repository argument to lookup_replace_object 2018-04-12 11:38:56 +09:00
mktree.c sha1_file: convert sha1_object_info* to object_id 2018-03-14 09:23:49 -07:00
mv.c Merge branch 'sb/submodule-move-nested' 2018-05-08 15:59:17 +09:00
name-rev.c Convert find_unique_abbrev* to struct object_id 2018-03-14 09:23:48 -07:00
notes.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
pack-objects.c Merge branch 'ds/commit-graph' 2018-05-08 15:59:20 +09:00
pack-redundant.c Merge branch 'sb/packfiles-in-repository' 2018-04-11 13:09:55 +09:00
pack-refs.c refs: add repository argument to get_main_ref_store 2018-04-12 11:38:56 +09:00
patch-id.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
prune-packed.c Merge branch 'jt/packmigrate' 2017-08-26 22:55:09 -07:00
prune.c sha1_file: convert sha1_object_info* to object_id 2018-03-14 09:23:49 -07:00
pull.c exec_cmd: rename to use dash in file name 2018-04-11 18:11:00 +09:00
push.c push: colorize errors 2018-04-24 10:38:47 +09:00
read-tree.c submodule: remove gitmodules_config 2017-08-03 13:11:02 -07:00
rebase--helper.c Merge branch 'gs/rebase-allow-empty-message' 2018-02-21 12:45:04 -08:00
receive-pack.c Merge branch 'bw/protocol-v2' 2018-05-08 15:59:16 +09:00
reflog.c Merge branch 'bc/object-id' 2018-04-10 08:25:45 +09:00
remote-ext.c consistently use "fallthrough" comments in switches 2017-09-22 12:49:57 +09:00
remote-fd.c remote-{ext,fd}: print usage message on invalid arguments 2017-05-30 14:45:04 +09:00
remote.c Merge branch 'bw/protocol-v2' 2018-05-08 15:59:16 +09:00
repack.c gc: do not repack promisor packfiles 2017-12-08 09:52:42 -08:00
replace.c refs: add repository argument to for_each_replace_ref 2018-04-12 11:38:56 +09:00
rerere.c avoid "write_in_full(fd, buf, len) != len" pattern 2017-09-14 15:17:59 +09:00
reset.c Convert find_unique_abbrev* to struct object_id 2018-03-14 09:23:48 -07:00
rev-list.c Merge branch 'bc/object-id' 2018-04-10 08:25:45 +09:00
rev-parse.c Convert find_unique_abbrev* to struct object_id 2018-03-14 09:23:48 -07:00
revert.c sequencer: improve config handling 2017-12-13 11:15:14 -08:00
rm.c Merge branch 'bc/object-id' 2018-04-10 08:25:45 +09:00
send-pack.c protocol: introduce enum protocol_version value protocol_v2 2018-03-14 14:15:07 -07:00
serve.c serve: introduce git-serve 2018-03-15 12:01:08 -07:00
shortlog.c Merge branch 'ps/contains-id-error-message' 2018-04-10 16:28:20 +09:00
show-branch.c Convert find_unique_abbrev* to struct object_id 2018-03-14 09:23:48 -07:00
show-ref.c Convert find_unique_abbrev* to struct object_id 2018-03-14 09:23:48 -07:00
stripspace.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
submodule--helper.c Merge branch 'nd/submodule-status-fix' 2018-05-08 15:59:31 +09:00
symbolic-ref.c refs: rename constant REF_NODEREF to REF_NO_DEREF 2017-11-06 10:31:08 +09:00
tag.c Merge branch 'jk/ref-array-push' 2018-04-25 13:28:59 +09:00
unpack-file.c sha1_file: convert read_sha1_file to struct object_id 2018-03-14 09:23:50 -07:00
unpack-objects.c Merge branch 'bc/object-id' 2018-04-10 08:25:45 +09:00
update-index.c Merge branch 'ps/contains-id-error-message' 2018-04-10 16:28:20 +09:00
update-ref.c refs: rename constant REF_NODEREF to REF_NO_DEREF 2017-11-06 10:31:08 +09:00
update-server-info.c parse-options: let OPT__FORCE take optional flags argument 2018-02-09 10:24:50 -08:00
upload-archive.c upload-archive: handle "-h" option early 2017-05-30 14:45:04 +09:00
upload-pack.c Merge branch 'bw/protocol-v2' 2018-05-08 15:59:16 +09:00
var.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
verify-commit.c sha1_file: convert read_sha1_file to struct object_id 2018-03-14 09:23:50 -07:00
verify-pack.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
verify-tag.c ref-filter: use "struct object_id" consistently 2018-04-09 06:14:45 +09:00
worktree.c Merge branch 'sb/worktree-remove-opt-force' 2018-05-08 15:59:24 +09:00
write-tree.c cache-tree: convert write_*_as_tree to object_id 2018-03-14 09:23:47 -07:00