Daniel Barkalow [off-list ref] writes:
On Mon, 18 Aug 2008, Junio C Hamano wrote:
...
quoted
If we had a configuration for "index-free" people, that changes the
semantics of "git add" to register object name of an empty blob when a
new path is added, makes "git add" for existing blobs a no-op, but
keeps "git commit -a" and "git commit <paths>" to operate as they
currently do, then people with such configuration could:
$ >new-file
$ git add new-file
$ edit old-file
$ edit new-file
$ git diff
to always see what's the difference from the HEAD is with "git diff",
and any of these three:
$ git commit -a
$ git commit old-file
$ git commit old-file new-file
would work as expected by them. We still need to support the three
diff variants for normal git people, but people who do not use index
do not have to know the two variants ("git diff" vs "git diff HEAD");
such a change could be argued as a "UI improvement" [*1*].
I think that having the possibility of adding an empty blob (or maybe a
magical "nothing currently here but git-ls-files includes it") would be
preferrable to a no-index mode.
I am not sure if you are really saying something different from what I am
saying. We'll see after this three patch series. The first one is an
unrelated bugfix (but the bug won't trigger with existing callers -- only
triggered with the added codepath).
On Thu, 21 Aug 2008, Junio C Hamano wrote:
Daniel Barkalow [off-list ref] writes:
quoted
On Mon, 18 Aug 2008, Junio C Hamano wrote:
...
quoted
If we had a configuration for "index-free" people, that changes the
semantics of "git add" to register object name of an empty blob when a
new path is added, makes "git add" for existing blobs a no-op, but
keeps "git commit -a" and "git commit <paths>" to operate as they
currently do, then people with such configuration could:
$ >new-file
$ git add new-file
$ edit old-file
$ edit new-file
$ git diff
to always see what's the difference from the HEAD is with "git diff",
and any of these three:
$ git commit -a
$ git commit old-file
$ git commit old-file new-file
would work as expected by them. We still need to support the three
diff variants for normal git people, but people who do not use index
do not have to know the two variants ("git diff" vs "git diff HEAD");
such a change could be argued as a "UI improvement" [*1*].
I think that having the possibility of adding an empty blob (or maybe a
magical "nothing currently here but git-ls-files includes it") would be
preferrable to a no-index mode.
I am not sure if you are really saying something different from what I am
saying. We'll see after this three patch series. The first one is an
unrelated bugfix (but the bug won't trigger with existing callers -- only
triggered with the added codepath).
I see this primarily as something you can use if you're worried about
leaving files out of commits. When you create the file, you can use "git
add -N" to make sure that it won't get overlooked when you're adding
things. If you weren't using the index for anything important, you could
just use a normal add, but that would get confusing if you're adding
completed changes as well as some half-written version of any file that
happens to be new. That is, it'll let you cause "git diff" to report the
contents as unstaged changes in your working tree, rather than not
reporting it (either because it's not tracked at all, or because the
changes are now staged). Then you can decide to stage them.
(The thing that I'd ideally like to have different is for:
$ echo "content" > new-name
$ git add -N new-name
$ git commit
Say:
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# added: new-name
#
no changes added to commit (use "git add" and/or "git commit -a")
rather than committing the empty blob. But that's tricky to implement
and keep from breaking other stuff and really minor; and the
documentation doesn't exclude that being what happens with -N)
-Daniel
*This .sig left intentionally blank*