@ -156,6 +156,28 @@ public class ResetCommandTest extends RepositoryTestCase {
assertEquals ( prevHead , db . readOrigHead ( ) ) ;
assertEquals ( prevHead , db . readOrigHead ( ) ) ;
}
}
@Test
public void testHardResetReflogDisabled ( ) throws Exception {
setupRepository ( ) ;
ObjectId prevHead = db . resolve ( Constants . HEAD ) ;
ResetCommand reset = git . reset ( ) ;
assertSameAsHead ( reset . setMode ( ResetType . HARD )
. setRef ( initialCommit . getName ( ) ) . disableRefLog ( true ) . call ( ) ) ;
assertTrue ( "reflog should be disabled" , reset . isReflogDisabled ( ) ) ;
// check if HEAD points to initial commit now
ObjectId head = db . resolve ( Constants . HEAD ) ;
assertEquals ( initialCommit , head ) ;
// check if files were removed
assertFalse ( indexFile . exists ( ) ) ;
assertTrue ( untrackedFile . exists ( ) ) ;
// fileInIndex must no longer be in HEAD and in the index
String fileInIndexPath = indexFile . getAbsolutePath ( ) ;
assertFalse ( inHead ( fileInIndexPath ) ) ;
assertFalse ( inIndex ( indexFile . getName ( ) ) ) ;
assertReflogDisabled ( head ) ;
assertEquals ( prevHead , db . readOrigHead ( ) ) ;
}
@Test
@Test
public void testHardResetWithConflicts_DoOverWriteUntrackedFile ( )
public void testHardResetWithConflicts_DoOverWriteUntrackedFile ( )
throws JGitInternalException ,
throws JGitInternalException ,
@ -562,6 +584,24 @@ public class ResetCommandTest extends RepositoryTestCase {
. getName ( ) ) ;
. getName ( ) ) ;
}
}
private void assertReflogDisabled ( ObjectId head )
throws IOException {
// Check the reflog for HEAD
String actualHeadMessage = db . getReflogReader ( Constants . HEAD )
. getLastEntry ( ) . getComment ( ) ;
String expectedHeadMessage = "commit: adding a.txt and dir/b.txt" ;
assertEquals ( expectedHeadMessage , actualHeadMessage ) ;
assertEquals ( head . getName ( ) , db . getReflogReader ( Constants . HEAD )
. getLastEntry ( ) . getOldId ( ) . getName ( ) ) ;
// The reflog for master contains the same as the one for HEAD
String actualMasterMessage = db . getReflogReader ( "refs/heads/master" )
. getLastEntry ( ) . getComment ( ) ;
String expectedMasterMessage = "commit: adding a.txt and dir/b.txt" ;
assertEquals ( expectedMasterMessage , actualMasterMessage ) ;
assertEquals ( head . getName ( ) , db . getReflogReader ( Constants . HEAD )
. getLastEntry ( ) . getOldId ( ) . getName ( ) ) ;
}
/ * *
/ * *
* Checks if a file with the given path exists in the HEAD tree
* Checks if a file with the given path exists in the HEAD tree
*
*