@ -339,18 +339,19 @@ class PackWriterBitmapPreparer {
if ( ( entry . getFlags ( ) & FLAG_REUSE ) ! = FLAG_REUSE ) {
continue ;
}
RevObject ro = rw . peel ( rw . parseAny ( entry ) ) ;
if ( ro instanceof RevCommit ) {
RevCommit rc = ( RevCommit ) ro ;
reuseCommits . add ( new BitmapCommit ( rc , false , entry . getFlags ( ) ) ) ;
rw . markUninteresting ( rc ) ;
// PackBitmapIndexRemapper.ofObjectType() ties the underlying
// bitmap in the old pack into the new bitmap builder.
bitmapRemapper . ofObjectType ( bitmapRemapper . getBitmap ( rc ) ,
Constants . OBJ_COMMIT ) . trim ( ) ;
reuse . add ( rc , Constants . OBJ_COMMIT ) ;
if ( ! ( ro instanceof RevCommit ) ) {
continue ;
}
RevCommit rc = ( RevCommit ) ro ;
reuseCommits . add ( new BitmapCommit ( rc , false , entry . getFlags ( ) ) ) ;
rw . markUninteresting ( rc ) ;
// PackBitmapIndexRemapper.ofObjectType() ties the underlying
// bitmap in the old pack into the new bitmap builder.
bitmapRemapper . ofObjectType ( bitmapRemapper . getBitmap ( rc ) ,
Constants . OBJ_COMMIT ) . trim ( ) ;
reuse . add ( rc , Constants . OBJ_COMMIT ) ;
}
// Add branch tips that are not represented in old bitmap indices. Set
@ -360,16 +361,18 @@ class PackWriterBitmapPreparer {
Set < RevCommit > peeledWant = new HashSet < RevCommit > ( want . size ( ) ) ;
for ( AnyObjectId objectId : want ) {
RevObject ro = rw . peel ( rw . parseAny ( objectId ) ) ;
if ( ro instanceof RevCommit & & ! reuse . contains ( ro ) ) {
RevCommit rc = ( RevCommit ) ro ;
peeledWant . add ( rc ) ;
rw . markStart ( rc ) ;
BitmapBuilder bitmap = commitBitmapIndex . newBitmapBuilder ( ) ;
bitmap . or ( reuse ) ;
bitmap . add ( rc , Constants . OBJ_COMMIT ) ;
tipCommitBitmaps . add ( new BitmapBuilderEntry ( rc , bitmap ) ) ;
if ( ! ( ro instanceof RevCommit ) | | reuse . contains ( ro ) ) {
continue ;
}
RevCommit rc = ( RevCommit ) ro ;
peeledWant . add ( rc ) ;
rw . markStart ( rc ) ;
BitmapBuilder bitmap = commitBitmapIndex . newBitmapBuilder ( ) ;
bitmap . or ( reuse ) ;
bitmap . add ( rc , Constants . OBJ_COMMIT ) ;
tipCommitBitmaps . add ( new BitmapBuilderEntry ( rc , bitmap ) ) ;
}
// Create a list of commits in reverse order (older to newer).
@ -382,10 +385,11 @@ class PackWriterBitmapPreparer {
commits [ - - pos ] = rc ;
for ( BitmapBuilderEntry entry : tipCommitBitmaps ) {
BitmapBuilder bitmap = entry . getBuilder ( ) ;
if ( bitmap . contains ( rc ) ) {
for ( RevCommit c : rc . getParents ( ) ) {
bitmap . add ( c , Constants . OBJ_COMMIT ) ;
}
if ( ! bitmap . contains ( rc ) ) {
continue ;
}
for ( RevCommit c : rc . getParents ( ) ) {
bitmap . add ( c , Constants . OBJ_COMMIT ) ;
}
}
pm . update ( 1 ) ;