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

Re: Checking out on a different+partial directory

From
Eli Barzilay <eli@barzilay.org>
Date
May 27, 2010, 05:10 UTC
Message-ID
<m3d3wikk0b.fsf@winooski.ccs.neu.edu>
In-Reply-To
<20100522054852.GB29118@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 11 quoted lines
> On Mon, May 17, 2010 at 06:53:55AM -0400, Eli Barzilay wrote:
>
>> Say that I have a repository at /some/dir, and a tree that contains
>> most of its files at /another/dir (the second is a build directory,
>> made with `git archive', so some files removed due to export-ignore
>> attributes and some built files are present).
>> 
>> Is there a convenient way to make /some/dir usable as a repository?
>
> Did you mean /another/dir? /some/dir is already a repository as per your
> description above
Yes, sorry for the confusion...
> (is it a bare repository or a regular one?).
It's a regular one.
Show 13 quoted lines
>> Two things that I tried are
>> 
>>   git --work-tree=/another/dir reset --hard master
>> 
>> which one time, but then failed with "fatal: unable to read tree...",
>> and another is
>
> I would have thought that worked, assuming you were in /some/dir. And
> oddly, _some_ stuff works. I tried:
>
> [...]
>
> So there is clearly a bug. I'll investigate.
Thanks!
Show 7 quoted lines
>>   cp -a /some/dir/.git /another/dir
>>   cd /another/dir
>>   git reset --hard master
>> 
>> which looks like it can suffer from the same problem.
>
> That should work, too.

Heh, I just assumed that I'm doing something similarly wrong in both cases... In any case, I finally settled on doing things the other way: grab all of the files that were created by the built tree and add them to the repository directory (that is -- get stuff from /another/dir into /some/dir). It's a little less convenient for me, so I'll probably switch back to the above, given that it should work.

Show 7 quoted lines
>> (It would be especially nice if there's a way to have only
>> different files touched in /another/dir.)
>
> Only different files will be rewritten, but git will have to read all of
> the files to determine their sha1 (usually it avoids this by checking
> stat info, but obviously your exported files will not match the stat
> info in the /another/dir's index).
Yes, I expected this cost...
-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!
Previous: Junio C Hamano
Message 6 of 6 in “Checking out on a different+partial directory”
  1. Eli BarzilayMay 17, 2010
  2. Jeff KingMay 22, 2010
  3. fix over-eager caching in sha1_file_nameJeff King, May 22, 2010
  4. remove over-eager caching in sha1_file_nameJeff King, May 22, 2010
  5. Junio C HamanoMay 26, 2010
  6. Eli BarzilayMay 27, 2010

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.