@@ -91,19 +91,6 @@ struct ref_store *packed_ref_store_create(const char *path,
91
91
return ref_store ;
92
92
}
93
93
94
- /*
95
- * Die if refs is not the main ref store. caller is used in any
96
- * necessary error messages.
97
- */
98
- static void packed_assert_main_repository (struct packed_ref_store * refs ,
99
- const char * caller )
100
- {
101
- if (refs -> store_flags & REF_STORE_MAIN )
102
- return ;
103
-
104
- die ("BUG: operation %s only allowed for main ref store" , caller );
105
- }
106
-
107
94
/*
108
95
* Downcast `ref_store` to `packed_ref_store`. Die if `ref_store` is
109
96
* not a `packed_ref_store`. Also die if `packed_ref_store` doesn't
@@ -321,40 +308,6 @@ static struct ref_dir *get_packed_refs(struct packed_ref_store *refs)
321
308
return get_packed_ref_dir (get_packed_ref_cache (refs ));
322
309
}
323
310
324
- /*
325
- * Add or overwrite a reference in the in-memory packed reference
326
- * cache. This may only be called while the packed-refs file is locked
327
- * (see packed_refs_lock()). To actually write the packed-refs file,
328
- * call commit_packed_refs().
329
- */
330
- void add_packed_ref (struct ref_store * ref_store ,
331
- const char * refname , const struct object_id * oid )
332
- {
333
- struct packed_ref_store * refs =
334
- packed_downcast (ref_store , REF_STORE_WRITE ,
335
- "add_packed_ref" );
336
- struct ref_dir * packed_refs ;
337
- struct ref_entry * packed_entry ;
338
-
339
- if (!is_lock_file_locked (& refs -> lock ))
340
- die ("BUG: packed refs not locked" );
341
-
342
- if (check_refname_format (refname , REFNAME_ALLOW_ONELEVEL ))
343
- die ("Reference has invalid format: '%s'" , refname );
344
-
345
- packed_refs = get_packed_refs (refs );
346
- packed_entry = find_ref_entry (packed_refs , refname );
347
- if (packed_entry ) {
348
- /* Overwrite the existing entry: */
349
- oidcpy (& packed_entry -> u .value .oid , oid );
350
- packed_entry -> flag = REF_ISPACKED ;
351
- oidclr (& packed_entry -> u .value .peeled );
352
- } else {
353
- packed_entry = create_ref_entry (refname , oid , REF_ISPACKED );
354
- add_ref_entry (packed_refs , packed_entry );
355
- }
356
- }
357
-
358
311
/*
359
312
* Return the ref_entry for the given refname from the packed
360
313
* references. If it does not exist, return NULL.
@@ -596,152 +549,6 @@ int packed_refs_is_locked(struct ref_store *ref_store)
596
549
static const char PACKED_REFS_HEADER [] =
597
550
"# pack-refs with: peeled fully-peeled \n" ;
598
551
599
- /*
600
- * Write the current version of the packed refs cache from memory to
601
- * disk. The packed-refs file must already be locked for writing (see
602
- * packed_refs_lock()). Return zero on success. On errors, rollback
603
- * the lockfile, write an error message to `err`, and return a nonzero
604
- * value.
605
- */
606
- int commit_packed_refs (struct ref_store * ref_store , struct strbuf * err )
607
- {
608
- struct packed_ref_store * refs =
609
- packed_downcast (ref_store , REF_STORE_WRITE | REF_STORE_MAIN ,
610
- "commit_packed_refs" );
611
- struct packed_ref_cache * packed_ref_cache =
612
- get_packed_ref_cache (refs );
613
- int ok ;
614
- int ret = -1 ;
615
- struct strbuf sb = STRBUF_INIT ;
616
- FILE * out ;
617
- struct ref_iterator * iter ;
618
- char * packed_refs_path ;
619
-
620
- if (!is_lock_file_locked (& refs -> lock ))
621
- die ("BUG: commit_packed_refs() called when unlocked" );
622
-
623
- /*
624
- * If packed-refs is a symlink, we want to overwrite the
625
- * symlinked-to file, not the symlink itself. Also, put the
626
- * staging file next to it:
627
- */
628
- packed_refs_path = get_locked_file_path (& refs -> lock );
629
- strbuf_addf (& sb , "%s.new" , packed_refs_path );
630
- if (create_tempfile (& refs -> tempfile , sb .buf ) < 0 ) {
631
- strbuf_addf (err , "unable to create file %s: %s" ,
632
- sb .buf , strerror (errno ));
633
- strbuf_release (& sb );
634
- goto out ;
635
- }
636
- strbuf_release (& sb );
637
-
638
- out = fdopen_tempfile (& refs -> tempfile , "w" );
639
- if (!out ) {
640
- strbuf_addf (err , "unable to fdopen packed-refs tempfile: %s" ,
641
- strerror (errno ));
642
- goto error ;
643
- }
644
-
645
- if (fprintf (out , "%s" , PACKED_REFS_HEADER ) < 0 ) {
646
- strbuf_addf (err , "error writing to %s: %s" ,
647
- get_tempfile_path (& refs -> tempfile ), strerror (errno ));
648
- goto error ;
649
- }
650
-
651
- iter = cache_ref_iterator_begin (packed_ref_cache -> cache , NULL , 0 );
652
- while ((ok = ref_iterator_advance (iter )) == ITER_OK ) {
653
- struct object_id peeled ;
654
- int peel_error = ref_iterator_peel (iter , & peeled );
655
-
656
- if (write_packed_entry (out , iter -> refname , iter -> oid -> hash ,
657
- peel_error ? NULL : peeled .hash )) {
658
- strbuf_addf (err , "error writing to %s: %s" ,
659
- get_tempfile_path (& refs -> tempfile ),
660
- strerror (errno ));
661
- ref_iterator_abort (iter );
662
- goto error ;
663
- }
664
- }
665
-
666
- if (ok != ITER_DONE ) {
667
- strbuf_addf (err , "unable to rewrite packed-refs file: "
668
- "error iterating over old contents" );
669
- goto error ;
670
- }
671
-
672
- if (rename_tempfile (& refs -> tempfile , packed_refs_path )) {
673
- strbuf_addf (err , "error replacing %s: %s" ,
674
- refs -> path , strerror (errno ));
675
- goto out ;
676
- }
677
-
678
- ret = 0 ;
679
- goto out ;
680
-
681
- error :
682
- delete_tempfile (& refs -> tempfile );
683
-
684
- out :
685
- free (packed_refs_path );
686
- return ret ;
687
- }
688
-
689
- /*
690
- * Rewrite the packed-refs file, omitting any refs listed in
691
- * 'refnames'. On error, leave packed-refs unchanged, write an error
692
- * message to 'err', and return a nonzero value. The packed refs lock
693
- * must be held when calling this function; it will still be held when
694
- * the function returns.
695
- *
696
- * The refs in 'refnames' needn't be sorted. `err` must not be NULL.
697
- */
698
- int repack_without_refs (struct ref_store * ref_store ,
699
- struct string_list * refnames , struct strbuf * err )
700
- {
701
- struct packed_ref_store * refs =
702
- packed_downcast (ref_store , REF_STORE_WRITE | REF_STORE_MAIN ,
703
- "repack_without_refs" );
704
- struct ref_dir * packed ;
705
- struct string_list_item * refname ;
706
- int needs_repacking = 0 , removed = 0 ;
707
-
708
- packed_assert_main_repository (refs , "repack_without_refs" );
709
- assert (err );
710
-
711
- if (!is_lock_file_locked (& refs -> lock ))
712
- die ("BUG: repack_without_refs called without holding lock" );
713
-
714
- /* Look for a packed ref */
715
- for_each_string_list_item (refname , refnames ) {
716
- if (get_packed_ref (refs , refname -> string )) {
717
- needs_repacking = 1 ;
718
- break ;
719
- }
720
- }
721
-
722
- /* Avoid locking if we have nothing to do */
723
- if (!needs_repacking )
724
- return 0 ; /* no refname exists in packed refs */
725
-
726
- packed = get_packed_refs (refs );
727
-
728
- /* Remove refnames from the cache */
729
- for_each_string_list_item (refname , refnames )
730
- if (remove_entry_from_dir (packed , refname -> string ) != -1 )
731
- removed = 1 ;
732
- if (!removed ) {
733
- /*
734
- * All packed entries disappeared while we were
735
- * acquiring the lock.
736
- */
737
- clear_packed_ref_cache (refs );
738
- return 0 ;
739
- }
740
-
741
- /* Write what remains */
742
- return commit_packed_refs (& refs -> base , err );
743
- }
744
-
745
552
static int packed_init_db (struct ref_store * ref_store , struct strbuf * err )
746
553
{
747
554
/* Nothing to do. */
0 commit comments