threads / discuss / 18773

Any way to edit the file in index directly?

Subject: Any way to edit the file in index directly?

## tl;dr

7 messages between Apr 8, 2009 and Apr 8, 2009.

replies: 6people: 4as markdown or json

Ping Yin· Apr 8, 2009, 01:03 UTC · lore
There seems to be a patch for this ( add -e?), but i forget where to find it.

For a big change, instead of "add -p", it may be easier to edit the index directly ( with the corresponding worktree file alongside)

Ping Yin
Jeff King· Apr 8, 2009, 02:10 UTC · re: Ping Yin · lore

Re: Any way to edit the file in index directly?

On Wed, Apr 08, 2009 at 09:03:03AM +0800, Ping Yin wrote:
> There seems to be a patch for this ( add -e?), but i forget where to
> find it.

"add -p" has an "e"dit option for editing the patch. I don't recall any way of directly editing the content.

> For a big change, instead of "add -p", it may be easier to edit the
> index directly ( with the corresponding worktree file alongside)

I'm not sure what you mean by "alongside". If you mean "by editing a temporary file that corresponds to the index file without munging your worktree file", then you can do:

  FILE=foo.c
  git show :$FILE >$FILE.tmp
  $EDITOR $FILE.tmp
  object=`git hash-object -w $FILE.tmp`
  git update-index --cacheinfo 100644 $object $FILE

And obviously you could make a script for that if you wanted (but at the very least, you would need quotes to handle files with spaces, and probably some magic to handle smudge/clean filters and CRLF properly for the tempfile).

-Peff
Jeff King· Apr 8, 2009, 02:16 UTC · re: Jeff King · lore

Re: Any way to edit the file in index directly?

On Tue, Apr 07, 2009 at 10:10:41PM -0400, Jeff King wrote:
Show 7 quoted lines
> On Wed, Apr 08, 2009 at 09:03:03AM +0800, Ping Yin wrote:
> 
> > There seems to be a patch for this ( add -e?), but i forget where to
> > find it.
> 
> "add -p" has an "e"dit option for editing the patch. I don't recall any
> way of directly editing the content.
Hmm, actually maybe you are thinking of:
  http://article.gmane.org/gmane.comp.version-control.git/103389

which I even reviewed, but it doesn't seem to have gone anywhere after that.

-Peff
Ping Yin· Apr 8, 2009, 02:27 UTC · re: Jeff King · lore

Re: Any way to edit the file in index directly?

Ping Yin
On Wed, Apr 8, 2009 at 10:16 AM, Jeff King <peff@peff.net> wrote:
Show 10 quoted lines
> On Tue, Apr 07, 2009 at 10:10:41PM -0400, Jeff King wrote:
>
>> On Wed, Apr 08, 2009 at 09:03:03AM +0800, Ping Yin wrote:
>>
>> > There seems to be a patch for this ( add -e?), but i forget where to
>> > find it.
>>
>> "add -p" has an "e"dit option for editing the patch. I don't recall any
>> way of directly editing the content.
>
> "add -p" has an "e"dit option for editing the patch. I don't recall any
> way of directly editing the content.

Sometimes by 'add -p', i can't get what i want (the patch will fail to apply when exiting editor). And with 'add -p', i can't get a global view of all changes together

> I'm not sure what you mean by "alongside".

By "aloneside" i mean i can open the index and worktree file in diff mode side by side for easily editing.

Show 7 quoted lines
> Hmm, actually maybe you are thinking of:
>
>  http://article.gmane.org/gmane.comp.version-control.git/103389
>
> which I even reviewed, but it doesn't seem to have gone anywhere after
> that.
>
Thanks, That's what i want.
Markus Heidelberg· Apr 8, 2009, 05:44 UTC · re: Ping Yin · lore

Re: Any way to edit the file in index directly?

Ping Yin, 08.04.2009:
Show 5 quoted lines
> On Wed, Apr 8, 2009 at 10:16 AM, Jeff King <peff@peff.net> wrote:
> > I'm not sure what you mean by "alongside".
> 
> By "aloneside" i mean i can open the index and worktree file in diff
> mode side by side for easily editing.

This is possible with git-difftool from the contrib/ area, but without editing the index file. But I think "worktree" is called "worktree" for a good reason.

Markus
Johannes Schindelin· Apr 8, 2009, 02:39 UTC · re: Jeff King · lore

Re: Any way to edit the file in index directly?

Hi,
On Tue, 7 Apr 2009, Jeff King wrote:
Show 7 quoted lines
> On Wed, Apr 08, 2009 at 09:03:03AM +0800, Ping Yin wrote:
> 
> > There seems to be a patch for this ( add -e?), but i forget where to
> > find it.
> 
> "add -p" has an "e"dit option for editing the patch. I don't recall any
> way of directly editing the content.

I posted a patch for "git add --edit", which allows you to edit the _diff_ between the working directory and the index, and which applies the result using apply --recount.

But that has nothing to do with "editing the index directly".

But you might want to use a combination of "hash-object -w --stdin" and "update-index --cacheinfo". IOW something like

	sha1=$(echo Hello | git hash-object -w --stdin) &&
	git update-index --cacheinfo 0644 $sha1 my-file

However, Ping, I _strongly_ suspect an X-Y problem here. IOW I think you are asking about specifics of a certain _solution_, while we probably have a better solution for your particular _problem_.

Hth, Dscho

Ping Yin· Apr 8, 2009, 04:17 UTC · re: Johannes Schindelin · lore

Re: Any way to edit the file in index directly?

On Wed, Apr 8, 2009 at 10:39 AM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:

Show 28 quoted lines
> Hi,
>
> On Tue, 7 Apr 2009, Jeff King wrote:
>
>> On Wed, Apr 08, 2009 at 09:03:03AM +0800, Ping Yin wrote:
>>
>> > There seems to be a patch for this ( add -e?), but i forget where to
>> > find it.
>>
>> "add -p" has an "e"dit option for editing the patch. I don't recall any
>> way of directly editing the content.
>
> I posted a patch for "git add --edit", which allows you to edit the _diff_
> between the working directory and the index, and which applies the result
> using apply --recount.
>
> But that has nothing to do with "editing the index directly".
>
> But you might want to use a combination of "hash-object -w --stdin" and
> "update-index --cacheinfo".  IOW something like
>
>        sha1=$(echo Hello | git hash-object -w --stdin) &&
>        git update-index --cacheinfo 0644 $sha1 my-file
>
> However, Ping, I _strongly_ suspect an X-Y problem here.  IOW I think you
> are asking about specifics of a certain _solution_, while we probably have
> a better solution for your particular _problem_.
>

Thanks. I think 'add --edit' is just what i meant by saying 'add -e'. I'll have it a try.

← back to recent threads