git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Using alternate working directory

From
Jeff King <peff@peff.net>
Date
Sep 24, 2013, 05:00 UTC
Message-ID
<20130924050011.GE2766@sigill.intra.peff.net>
In-Reply-To
<523E09D8.8090808@rachum.com>
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
Previous: Ram Rachum
Message 3 of 3 in “Using alternate working directory”
  1. Ram RachumSep 21, 2013
  2. Ram RachumSep 24, 2013
  3. Jeff KingSep 24, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.