{"push_id":1041414094,"size":1,"distinct_size":1,"ref":"refs/heads/feature-rewrite","head":"f1f1e5c6cb803c3675dc1bbb4ddcc9b4ca4ad37d","before":"25e7ee48e8e8511f84d060baa8e1a2d1b32fa0d3","commits":[{"sha":"f1f1e5c6cb803c3675dc1bbb4ddcc9b4ca4ad37d","author":{"email":"61c9b2b17db77a27841bbeeabff923448b0f6388@enkore.de","name":"Marian Beermann"},"message":"borg rewrite: Rewrites the contents of existing archives.\n\nUse with caution: permanent data loss by specifying incorrect patterns\nis easily possible. Make a dry run to make sure you got everything right.\n\nborg rewrite has many uses:\n- Can selectively remove files/dirs from old archives, e.g. to free\n  space or purging picturarum biggus dickus from history\n- Recompress data\n- Rechunkify data, to have upgraded Attic / Borg 0.xx archives deduplicate\n  with Borg 1.x archives. (Or to experiment with chunker-params for\n  specific use cases\n\nIt is interrupt- and resumable.\n\nChunks are not freed on-the-fly.\nRationale:\n  Makes only sense when rechunkifying, but logic on which new chunks to\n  free what input chunks is complicated and *very* delicate.\n\n\nCurrent TODOs:\n- Detect and skip (unless --force) already recompressed chunks\n  -- delayed until current PRs on borg.key APIs are decided\n     #810 #789\n- Usage example\n\nFuture TODOs:\n- Refactor tests using py.test fixtures\n  -- would require porting ArchiverTestCase to py.test: many changes,\n     this changeset is already borderline too large.\n- Possibly add a --target option to not replace the source archive\n  -- with the target possibly in another Repo\n     (better than \"cp\" due to full integrity checking, and deduplication\n      at the target)\n\nFixes #787 #686 #630 #70 (and probably some I overlooked)\nAlso see #757 and #770","distinct":true,"url":"https://api.github.com/repos/enkore/borg/commits/f1f1e5c6cb803c3675dc1bbb4ddcc9b4ca4ad37d"}]}