| 1759 | } |
| 1760 | |
| 1761 | func (r *Repository) RepackObjects(cfg *RepackConfig) (err error) { |
| 1762 | pos, ok := r.Storer.(storer.PackedObjectStorer) |
| 1763 | if !ok { |
| 1764 | return ErrPackedObjectsNotSupported |
| 1765 | } |
| 1766 | |
| 1767 | // Get the existing object packs. |
| 1768 | hs, err := pos.ObjectPacks() |
| 1769 | if err != nil { |
| 1770 | return err |
| 1771 | } |
| 1772 | |
| 1773 | // Create a new pack. |
| 1774 | nh, err := r.createNewObjectPack(cfg) |
| 1775 | if err != nil { |
| 1776 | return err |
| 1777 | } |
| 1778 | |
| 1779 | // Delete old packs. |
| 1780 | for _, h := range hs { |
| 1781 | // Skip if new hash is the same as an old one. |
| 1782 | if h == nh { |
| 1783 | continue |
| 1784 | } |
| 1785 | err = pos.DeleteOldObjectPackAndIndex(h, cfg.OnlyDeletePacksOlderThan) |
| 1786 | if err != nil { |
| 1787 | return err |
| 1788 | } |
| 1789 | } |
| 1790 | |
| 1791 | return nil |
| 1792 | } |
| 1793 | |
| 1794 | // Merge merges the reference branch into the current branch. |
| 1795 | // |