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

Re: FIX/COMMENT: git remote manual page

From
MBMichel Briand <michelbriand@free.fr>
Date
Dec 25, 2010, 11:41 UTC
Message-ID
<20101225124104.06a4f83c@eana.kheb.homelinux.org>
In-Reply-To
<AANLkTim_pHYEZ+7-Rm5N4Ycw2MTHD8AhvZrZqNhttkck@mail.gmail.com>

Nguyen Thai Ngoc Duy <pclouds@gmail.com> - Sat, 25 Dec 2010 17:48:58 +0700

Show 23 quoted lines
>On Wed, Dec 22, 2010 at 8:15 AM, Michel Briand <michelbriand@free.fr> wrote:
>> Hello,
>>
>> I tried the example given at the bottom if the manual page of git
>> remote.
>>
>> ·   Imitate git clone but track only selected branches
>>
>> $ mkdir project.git
>> $ cd project.git
>> $ git init
>> $ git remote add -f -t master -m master origin git://example.com/git.git/
>> $ git merge origin
>>
>> It works like it is written.
>>
>> But it seems this does not work with my special setup:
>> - I use GIT_DIR and GIT_WORK_TREE to specify another location for my
>>  repository, and to work from another directory,
>> - I name my remote with a custom name (not origin).
>
>So you set GIT_DIR and GIT_WORK_TREE before running "git remote add"?
>
Yes.
Show 7 quoted lines
>> It fails at the last command :
>>
>>    fatal: <my name> - not something we can merge
>
>It fails to see "<my name>" points to a commit. Maybe it fails to read
>remote information from config..
>
Huh, I don't know.
Show 18 quoted lines
>> But if I try the command :
>>
>>    git merge <my name>/master
>>
>> the error message is different :
>>
>>    fatal: This operation must be run in a work tree
>>    fatal: read-tree failed
>>
>> I cd to the work tree and issue the same last command.
>> Then it works.
>
>What git version are use using? I did
>
>GIT_DIR=git/.git GIT_WORK_TREE=git git/git merge origin # or a specific branch
>
>and it worked fine here (recent master). That message means work-tree
>settings are not propagated to git-read-tree (run by git-merge).
Hi,
I'm running Debian squeeze. Git is version 1.7.2.3.
Here is the complete command sequence I used:
~/tmp/git $ mkdir toto toto_wk
~/tmp/git $ GIT_DIR=toto GIT_WORK_TREE=toto_wk git init
Initialized empty Git repository in xxxxxxxxxxxxxxxx/tmp/git/toto/
~/tmp/git $ GIT_DIR=toto GIT_WORK_TREE=toto_wk git remote add -f -t master -m master TOTO xxxxxx/shlib 
Updating TOTO
remote: Counting objects: 36, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 36 (delta 9), reused 0 (delta 0)
Unpacking objects: 100% (36/36), done.
From xxxxxxxxxxxxxxxxx/shlib
 * [new branch]      master     -> TOTO/master
From xxxxxxxxxxxxxxxxx/shlib
 * [new tag]         1.0        -> 1.0
 * [new tag]         1.0.1      -> 1.0.1
~/tmp/git $ GIT_DIR=toto GIT_WORK_TREE=toto_wk git merge TOTO
fatal: This operation must be run in a work tree
fatal: read-tree failed
~/tmp/git $ ls toto_wk/
<NOTHING>
I re-issue the latest command :

~/tmp/git $ GIT_DIR=toto GIT_WORK_TREE=toto_wk git merge TOTO Already up-to-date.

Strange isn't it ?

But directory is still empty ~/tmp/git $ ls toto_wk/ <NOTHING>

Trying to recover :
~/tmp/git $ GIT_DIR=toto GIT_WORK_TREE=toto_wk git reset --hard
The directory is correct (in sync with my master branch).
If I do :

...git init ...git remote add... cd toto_wk GIT_DIR=../toto GIT_WORK_TREE=. git merge TOTO

It works !

Adding /master after remote name doesn't make any difference. Please forget this idea.

The problem seems to reside in the work tree parameter (. or not).

Cheers, Michel

Previous: Nguyen Thai Ngoc DuyNext: Nguyen Thai Ngoc Duy
Message 3 of 4 in “FIX/COMMENT: git remote manual page”
  1. Michel BriandDec 22, 2010
  2. Nguyen Thai Ngoc DuyDec 25, 2010
  3. Michel BriandDec 25, 2010
  4. Nguyen Thai Ngoc DuyDec 25, 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.