Nguyen Thai Ngoc Duy <pclouds@xxxxxxxxx> - Sat, 25 Dec 2010 17:48:58 +0700 >On Wed, Dec 22, 2010 at 8:15 AM, Michel Briand <michelbriand@xxxxxxx> 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. >> 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. >> 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html