Issue 2977: Push with Missing tree & download is NOT Incremental mode
Status:  New
Owner: ----
Reported by qjgw...@gmail.com, Oct 19, 2014
Please release the gerrit with jgit 4.5 bug fix quickly.
Thanks.

Affected Version: All gerrit versions which are NOT used jgit 4.5(fix bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=422988)

Because of this bug, we will get Missing tree bug and download is NOT Incremental mode.

And the following is the steps which reproduce the problem:
Please take case of the Missing tree problem and the objects count value.

# Native C git version is 2.1.1
± % git --version                                                                                                                                                      
git version 2.1.1

### Init a problem git to okserver(gerrit-master-3862ba2) and the errorserver(gerrit 2.9.1 Release)
#Work directory base
± % mkdir testdir                                                                                                                                                      

#Work directory base
± % cd testdir                                                                                                                                                         

#Work directory base/testdir
± % mkdir initgit                                                                                                                                                      

#Work directory base/testdir
± % cd initgit                                                                                                                                                         

#Work directory base/testdir/initgit
± % git init                                                                                                                                                           
Initialized empty Git repository in base/testdir/initgit/.git/

#Work directory base/testdir/initgit
± % git remote add errorserver ssh://user@errorserver:29418/sandbox                                                                             

#Work directory base/testdir/initgit
± % git remote add okserver ssh://user@okserver:29418/sandbox                                                                                           

## Create objects
#Work directory base/testdir/initgit
± % echo 'Blob object content' | git hash-object -w --stdin                                                                                                            
7f9cae7daa0dc95c52dcd3fb0df3ad0f154c7f73

#Work directory base/testdir/initgit
± % git update-index --add --cacheinfo 100644,7f9cae7daa0dc95c52dcd3fb0df3ad0f154c7f73,TestContent.txt                                                                 

#Work directory base/testdir/initgit
± % git write-tree                                                                                                                                                     
09fa8b7be3d771ca3ee5d6327fc7223bbef3abe6

#Work directory base/testdir/initgit
± % echo 'Commit message First' | git commit-tree 09fa8b7be3d771ca3ee5d6327fc7223bbef3abe6                                                                             
7cc1d873671999517926808fdd39f09d592757bf

#Work directory base/testdir/initgit
± % echo 'Commit message Second' | git commit-tree 09fa8b7be3d771ca3ee5d6327fc7223bbef3abe6                                                                            
196b3e85efd89e2a081790009132d8529e076e25

## Push to errorserver
#Work directory base/testdir/initgit
± % git push errorserver 7cc1d873671999517926808fdd39f09d592757bf:refs/heads/FullBranch                                                                                
Counting objects: 3, done.
Writing objects: 100% (3/3), 249 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done    
To ssh://user@errorserver:29418/sandbox
 * [new branch]      7cc1d873671999517926808fdd39f09d592757bf -> FullBranch

# !!!IMPORTANT!!! Missing tree because of the jgit bug
#Work directory base/testdir/initgit
± % git push errorserver 196b3e85efd89e2a081790009132d8529e076e25:refs/heads/IncBranch                                                                                 
Counting objects: 1, done.
Writing objects: 100% (1/1), 167 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
error: unpack failed: error Missing tree 09fa8b7be3d771ca3ee5d6327fc7223bbef3abe6
fatal: Unpack error, check server log
To ssh://user@errorserver:29418/sandbox
 ! [remote rejected] 196b3e85efd89e2a081790009132d8529e076e25 -> IncBranch (n/a (unpacker error))
error: failed to push some refs to 'ssh://user@errorserver:29418/sandbox'

#Work directory base/testdir/initgit
#You should use no-thin mode to push
± % git push errorserver 196b3e85efd89e2a081790009132d8529e076e25:refs/heads/IncBranch --no-thin                                                                       
Counting objects: 3, done.
Writing objects: 100% (3/3), 251 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done    
To ssh://user@errorserver:29418/sandbox
 * [new branch]      196b3e85efd89e2a081790009132d8529e076e25 -> IncBranch

#Work directory base/testdir/initgit
± % git push okserver 7cc1d873671999517926808fdd39f09d592757bf:refs/heads/FullBranch                                                                                   
Counting objects: 3, done.
Writing objects: 100% (3/3), 249 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done    
To ssh://user@okserver:29418/sandbox
 * [new branch]      7cc1d873671999517926808fdd39f09d592757bf -> FullBranch

#!!!IMPORTANT!!! okserver is PASS
#Work directory base/testdir/initgit
± % git push okserver 196b3e85efd89e2a081790009132d8529e076e25:refs/heads/IncBranch                                                                                    
Counting objects: 1, done.
Writing objects: 100% (1/1), 167 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done    
To ssh://user@okserver:29418/sandbox
 * [new branch]      196b3e85efd89e2a081790009132d8529e076e25 -> IncBranch


### Check for download with Incremental mode
#Work directory base/testdir/initgit
± % cd ..                                                                                                                                                              

#Work directory base/testdir
± % mkdir errorservergit                                                                                                                                               

#Work directory base/testdir
± % cd errorservergit                                                                                                                                                  

#Work directory base/testdir/errorservergit
± % git init                                                                                                                                                           
Initialized empty Git repository in /home/wpc/workspace/tvs/debug/testdir/errorservergit/.git/

#Work directory base/testdir/errorservergit
± % git remote add errorserver ssh://user@errorserver:29418/sandbox                                                                             

#Work directory base/testdir/errorservergit
± % git fetch errorserver FullBranch                                                                                                                                   
remote: Counting objects: 3, done
remote: Finding sources: 100% (3/3)
remote: Total 3 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (3/3), done.
From ssh://errorserver:29418/sandbox
 * branch            FullBranch -> FETCH_HEAD
 * [new branch]      FullBranch -> errorserver/FullBranch

###!!!IMPORTANT!!! fetch with Incremental mode failed, download 3 objects
#Work directory base/testdir/errorservergit
± % git fetch errorserver IncBranch                                                                                                                                    
remote: Counting objects: 3, done
remote: Finding sources: 100% (3/3)
remote: Total 3 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (3/3), done.
From ssh://errorserver:29418/sandbox
 * branch            IncBranch  -> FETCH_HEAD
 * [new branch]      IncBranch  -> errorserver/IncBranch

### Okserver
#Work directory base/testdir/errorservergit
± % cd ..                                                                                                                                                              

#Work directory base/testdir
± % mkdir okservergit                                                                                                                                                  

#Work directory base/testdir
± % cd okservergit

#Work directory base/testdir/okservergit
± % git remote add okserver ssh://user@okserver:29418/sandbox                                                                                           

#Work directory base/testdir/okservergit
± % git fetch okserver FullBranch
warning: no common commits
remote: Counting objects: 3, done
remote: Finding sources: 100% (3/3)
remote: Total 3 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (3/3), done.
From ssh://okserver:29418/sandbox
 * branch            FullBranch -> FETCH_HEAD
 * [new branch]      FullBranch -> okserver/FullBranch

###!!!IMPORTANT!!! fetch with Incremental mode pass, download only 1 objects
#Work directory base/testdir/okservergit
± % git fetch okserver IncBranch                                                                                                                                       
remote: Counting objects: 1, done
remote: Finding sources: 100% (1/1)
remote: Total 1 (delta 0), reused 1 (delta 0)
Unpacking objects: 100% (1/1), done.
From ssh://okserver:29418/sandbox
 * branch            IncBranch  -> FETCH_HEAD
 * [new branch]      IncBranch  -> okserver/IncBranch



  
steps.txt
9.4 KB   View   Download
Oct 19, 2014
#1 qjgw...@gmail.com
The attachment is the steps for reproducing the problem
Oct 19, 2014
#2 qjgw...@gmail.com
It works like the  Issue 2296