Re: [PATCH] update-index: add --swap to swap index and worktree content
- From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
- Date
- Aug 17, 2011, 14:32 UTC
- Message-ID
- <CACsJy8Cc5PLLXj8TgGS0EjZ5SRyBGfo6WUnYaZNkdnZv62WQZQ@mail.gmail.com>
- In-Reply-To
- <CAOeW2eFx-ETS+1a5b2bUXeT8JJ0WGudKGyF6mxuqyK2OM35qQA@mail.gmail.com>
On Wed, Aug 17, 2011 at 9:13 PM, Martin von Zweigbergk <martin.von.zweigbergk@gmail.com> wrote:
Show 14 quoted lines
> Hi, > > On Tue, Aug 16, 2011 at 10:17 PM, Jeff King <peff@peff.net> wrote: >> On Wed, Aug 17, 2011 at 09:11:32AM +0700, Nguyen Thai Ngoc Duy wrote: >> >>> Two reasons. I already mentioned the ability to quickly checkout index >>> for a quick test (though there could be more problems down that road). >> >> That's a good thought. However, in practice, I find I also need other >> files from the index to do a successful test. So I end up just >> committing what I think is right, and then afterwards do: > > Maybe a stupid question, but "update-index --swap" would swap all > files, right? So what "other files from the index" would there be?
That's some of the "problems down that road", another one being removed files in index. Still the ability to do a quick compile on a single file is cool.
Show 8 quoted lines
> Maybe the above shows that I'm missing something. Still, would it be > possible to achieve the use case with something like the following? > > git stash --keep-index > # fix up files, test etc. > git add .... > git commit > git cherry-pick --strategy=theirs stash && git stash drop
Pretty much (if I understand git-stash correctly, I haven't used it much), except that if I change my mind mid way, I can switch back to the original state and keep working:
1. git add -p ... 2. git update-index --swap foo # index <-> wt 3. # make some minor edit, "make foo.o", oops failed, I missed some hunks 4. git checkout -p ... 5. # still not happy, more changes should be made on both index and wt 6. git update-index --swap foo # now index is index, wt is wt 7. # edit some more, when ready to commit, repeat steps 2-6 again 8. git commit
-- Duy