# Any way to edit the file in index directly?

7 messages from 2009-04-08 to 2009-04-08. Participants: Ping Yin, Jeff King, Johannes Schindelin, Markus Heidelberg.
Thread: https://gitlist.dev/t/18773

## Ping Yin, 2009-04-08 01:03

Subject: Any way to edit the file in index directly?
Message-ID: <46dff0320904071803k68fddff4j226760392e0c5bcc@mail.gmail.com>
URL: https://gitlist.dev/e/46dff0320904071803k68fddff4j226760392e0c5bcc%40mail.gmail.com

```
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, 2009-04-08 02:10

Subject: Re: Any way to edit the file in index directly?
Message-ID: <20090408021041.GB18244@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20090408021041.GB18244%40coredump.intra.peff.net
In-Reply-To: <46dff0320904071803k68fddff4j226760392e0c5bcc@mail.gmail.com>

```
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, 2009-04-08 02:16

Subject: Re: Any way to edit the file in index directly?
Message-ID: <20090408021620.GC18244@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20090408021620.GC18244%40coredump.intra.peff.net
In-Reply-To: <20090408021041.GB18244@coredump.intra.peff.net>

```
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.

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, 2009-04-08 02:27

Subject: Re: Any way to edit the file in index directly?
Message-ID: <46dff0320904071927l16d54c8bv9c219e681cc96bb2@mail.gmail.com>
URL: https://gitlist.dev/e/46dff0320904071927l16d54c8bv9c219e681cc96bb2%40mail.gmail.com
In-Reply-To: <20090408021620.GC18244@coredump.intra.peff.net>

```
Ping Yin



On Wed, Apr 8, 2009 at 10:16 AM, Jeff King <peff@peff.net> wrote:
> 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.

> 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.

```

## Johannes Schindelin, 2009-04-08 02:39

Subject: Re: Any way to edit the file in index directly?
Message-ID: <alpine.DEB.1.00.0904080434240.10279@pacific.mpi-cbg.de>
URL: https://gitlist.dev/e/alpine.DEB.1.00.0904080434240.10279%40pacific.mpi-cbg.de
In-Reply-To: <20090408021041.GB18244@coredump.intra.peff.net>

```
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_.

Hth,
Dscho

```

## Ping Yin, 2009-04-08 04:17

Subject: Re: Any way to edit the file in index directly?
Message-ID: <46dff0320904072117x712f29dj6854ee7219aede9d@mail.gmail.com>
URL: https://gitlist.dev/e/46dff0320904072117x712f29dj6854ee7219aede9d%40mail.gmail.com
In-Reply-To: <alpine.DEB.1.00.0904080434240.10279@pacific.mpi-cbg.de>

```
On Wed, Apr 8, 2009 at 10:39 AM, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
> 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.

```

## Markus Heidelberg, 2009-04-08 05:44

Subject: Re: Any way to edit the file in index directly?
Message-ID: <200904080744.02580.markus.heidelberg@web.de>
URL: https://gitlist.dev/e/200904080744.02580.markus.heidelberg%40web.de
In-Reply-To: <46dff0320904071927l16d54c8bv9c219e681cc96bb2@mail.gmail.com>

```
Ping Yin, 08.04.2009:
> 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

```
