git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Cutting history

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Jul 10, 2010, 11:58 UTC
Message-ID
<AANLkTikY8RKseD8K4RVrLHnSdW_Su8hVRPRFkzzz1rGv@mail.gmail.com>
In-Reply-To
<m3tyo7lo6n.fsf@localhost.localdomain>
On Sat, Jul 10, 2010 at 08:47, Jakub Narebski <jnareb@gmail.com> wrote:
Show 12 quoted lines
> Joshua Jensen <jjensen@workspacewhiz.com> writes:
>
>>   ----- Original Message -----
>> From: Enrico Weigelt
>> Date: 7/9/2010 9:25 PM
>>
>> > I'm using git for automatic backups (eg. database dumps). This
>> > works quite well, but as time goes, the history (and so the repo)
>> > gets larger and larger. It would be really nice to allow cutting
>> > off old stuff (eg. after N commits in the past).
>
> This is certainly Using Git For What It Was Not Intended...

It actually works very well though. I use Git to back up MySQL databases like this.

Here's the script I use to dump MySQL databases:
    http://github.com/avar/linode-etc/blob/master/bin/cron/mysqldump-to-git
And a small wrapper to dump them all:
    http://github.com/avar/linode-etc/blob/master/bin/cron/mysqldump-to-git-all
I make dumps every 6 hours:
    http://github.com/avar/linode-etc/blob/master/cron.d/v-mysql-git-backup

And after each dump I repack & prune (some of this is probably redundant given the linear history) the repository:

    http://github.com/avar/linode-etc/blob/master/bin/cron/git-repack-and-gc-dir
And here's graph showing how big the dumps get:
    http://munin.nix.is/nix.is/v.nix.is/dirs_var_backup_mysql.html

The climbing charts before the size cutoff were before I started repacking them.

As for pruning old history, I thought this *should* work for pruning history older than 7 days (given that you dump daily):

    git rebase --strategy=base --onto master~8 master~7

But of course that deletes new commits. I need to freshen up on my rebase understanding. Maybe someone else on list knows how to do that. I thought git rebase --interactive might work, but I can't get it to display the root commit. Maybe you need git-filter-branch.

Previous: Martin PetterssonNext: Ævar Arnfjörð Bjarmason
Message 6 of 7 in “Cutting history”
  1. Enrico WeigeltJul 10, 2010
  2. Joshua JensenJul 10, 2010
  3. Chris FreyJul 10, 2010
  4. Jakub NarebskiJul 10, 2010
  5. Martin PetterssonJul 10, 2010
  6. Ævar Arnfjörð BjarmasonJul 10, 2010
  7. Ævar Arnfjörð BjarmasonJul 10, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.