@ -292,6 +292,64 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase {
assertEquals ( pid , db . resolve ( "refs/heads/master" ) ) ;
assertEquals ( pid , db . resolve ( "refs/heads/master" ) ) ;
}
}
/ * *
* Update the HEAD ref . Only it should be changed , not what it points to .
*
* @throws Exception
* /
public void testUpdateRefDetached ( ) throws Exception {
ObjectId pid = db . resolve ( "refs/heads/master" ) ;
ObjectId ppid = db . resolve ( "refs/heads/master^" ) ;
RefUpdate updateRef = db . updateRef ( "HEAD" , true ) ;
updateRef . setForceUpdate ( true ) ;
updateRef . setNewObjectId ( ppid ) ;
Result update = updateRef . update ( ) ;
assertEquals ( Result . FORCED , update ) ;
assertEquals ( ppid , db . resolve ( "HEAD" ) ) ;
Ref ref = db . getRef ( "HEAD" ) ;
assertEquals ( "HEAD" , ref . getName ( ) ) ;
assertEquals ( "HEAD" , ref . getOrigName ( ) ) ;
// the branch HEAD referred to is left untouched
assertEquals ( pid , db . resolve ( "refs/heads/master" ) ) ;
ReflogReader reflogReader = new ReflogReader ( db , "HEAD" ) ;
org . eclipse . jgit . lib . ReflogReader . Entry e = reflogReader . getReverseEntries ( ) . get ( 0 ) ;
assertEquals ( pid , e . getOldId ( ) ) ;
assertEquals ( ppid , e . getNewId ( ) ) ;
assertEquals ( "GIT_COMMITTER_EMAIL" , e . getWho ( ) . getEmailAddress ( ) ) ;
assertEquals ( "GIT_COMMITTER_NAME" , e . getWho ( ) . getName ( ) ) ;
assertEquals ( 1250379778000L , e . getWho ( ) . getWhen ( ) . getTime ( ) ) ;
}
/ * *
* Update the HEAD ref when the referenced branch is unborn
*
* @throws Exception
* /
public void testUpdateRefDetachedUnbornHead ( ) throws Exception {
ObjectId ppid = db . resolve ( "refs/heads/master^" ) ;
db . writeSymref ( "HEAD" , "refs/heads/unborn" ) ;
RefUpdate updateRef = db . updateRef ( "HEAD" , true ) ;
updateRef . setForceUpdate ( true ) ;
updateRef . setNewObjectId ( ppid ) ;
Result update = updateRef . update ( ) ;
assertEquals ( Result . NEW , update ) ;
assertEquals ( ppid , db . resolve ( "HEAD" ) ) ;
Ref ref = db . getRef ( "HEAD" ) ;
assertEquals ( "HEAD" , ref . getName ( ) ) ;
assertEquals ( "HEAD" , ref . getOrigName ( ) ) ;
// the branch HEAD referred to is left untouched
assertNull ( db . resolve ( "refs/heads/unborn" ) ) ;
ReflogReader reflogReader = new ReflogReader ( db , "HEAD" ) ;
org . eclipse . jgit . lib . ReflogReader . Entry e = reflogReader . getReverseEntries ( ) . get ( 0 ) ;
assertEquals ( ObjectId . zeroId ( ) , e . getOldId ( ) ) ;
assertEquals ( ppid , e . getNewId ( ) ) ;
assertEquals ( "GIT_COMMITTER_EMAIL" , e . getWho ( ) . getEmailAddress ( ) ) ;
assertEquals ( "GIT_COMMITTER_NAME" , e . getWho ( ) . getName ( ) ) ;
assertEquals ( 1250379778000L , e . getWho ( ) . getWhen ( ) . getTime ( ) ) ;
}
/ * *
/ * *
* Delete a ref that exists both as packed and loose . Make sure the ref
* Delete a ref that exists both as packed and loose . Make sure the ref
* cannot be resolved after delete .
* cannot be resolved after delete .