threads / discuss / 34992

Using alternate working directory

Subject: Using alternate working directory

## tl;dr

3 messages between Sep 21, 2013 and Sep 24, 2013.

replies: 2people: 2as markdown or json

Ram Rachum· Sep 21, 2013, 21:04 UTC · lore
Hi everybody!
I need some help with Git.

I'm making a script `gm` which lets me merge one branch into another without having either checked out. It works for some cases but not all. I'm trying to make it work for more cases.

I concluded that the best way to do it would be by using an alternate, temporary working directory instead of the repo itself.

This is my script:
     https://gist.github.com/cool-RR/6575042
Now, the problem is that when I try it, it gives these errors:
     git checkout-index: my_file is not in the cache and then error:
     my_file: cannot add to the index - missing --add option?
Anyone has any idea what to do?

P.S. I've also asked this on Stack Overflow, so whoever comes up with an answer can claim his 150 imaginary internet points on that question.

Thanks, Ram.

Ram Rachum· Sep 24, 2013, 04:27 UTC · re: Ram Rachum · lore

Re: Using alternate working directory

Does anyone care to help? I'd really like to solve this  :(
On 22/9/2013 00:04, Ram Rachum wrote:
Show 28 quoted lines
> Hi everybody!
>
> I need some help with Git.
>
> I'm making a script `gm` which lets me merge one branch into another 
> without having either checked out. It works for some cases but not 
> all. I'm trying to make it work for more cases.
>
> I concluded that the best way to do it would be by using an alternate, 
> temporary working directory instead of the repo itself.
>
> This is my script:
>
>     https://gist.github.com/cool-RR/6575042
>
> Now, the problem is that when I try it, it gives these errors:
>
>     git checkout-index: my_file is not in the cache and then error:
>     my_file: cannot add to the index - missing --add option?
>
> Anyone has any idea what to do?
>
> P.S. I've also asked this on Stack Overflow, so whoever comes up with 
> an answer can claim his 150 imaginary internet points on that question.
>
>
> Thanks,
> Ram.
Jeff King· Sep 24, 2013, 05:00 UTC · re: Ram Rachum · lore

Re: Using alternate working directory

On Sun, Sep 22, 2013 at 12:04:24AM +0300, Ram Rachum wrote:
Show 6 quoted lines
> I'm making a script `gm` which lets me merge one branch into another
> without having either checked out. It works for some cases but not
> all. I'm trying to make it work for more cases.
> 
> I concluded that the best way to do it would be by using an
> alternate, temporary working directory instead of the repo itself.

Yes, otherwise you will be stomping all over the working tree of whatever branch _is_ checked out.

Show 10 quoted lines
> This is my script:
> 
>     https://gist.github.com/cool-RR/6575042
> 
> Now, the problem is that when I try it, it gives these errors:
> 
>     git checkout-index: my_file is not in the cache and then error:
>     my_file: cannot add to the index - missing --add option?
> 
> Anyone has any idea what to do?

Your script is quite similar to the one that is used server-side at GitHub to generate the "this can be merged" button for each pull request. So it should work in principle.

Just a guess, but using a relative path for the temporary index file might be a problem. read-tree will operate from $GIT_DIR as its working directory, for example, but I think the git-merge-one-file script will be at the top-level of $GIT_WORK_TREE. Meaning that all of the sub-commands it runs will see an empty index.

-Peff

← back to recent threads