diff --git a/configs/dist-git/dist-git.conf b/configs/dist-git/dist-git.conf index 3667618..c5b9adf 100644 --- a/configs/dist-git/dist-git.conf +++ b/configs/dist-git/dist-git.conf @@ -7,6 +7,9 @@ git_author_email = rel-eng@lists.fedoraproject.org lookaside_dir = /var/lib/dist-git/cache/lookaside/pkgs gitroot_dir = /var/lib/dist-git/git +# relates to the dist-git-gc script (and timer), +# we need to dive 2 levels from gitroot_dir in the directory structure +git_gc_depth = 2 gitolite = True grok = True diff --git a/configs/systemd/dist-git-gc.service b/configs/systemd/dist-git-gc.service new file mode 100644 index 0000000..5203fc5 --- /dev/null +++ b/configs/systemd/dist-git-gc.service @@ -0,0 +1,9 @@ +[Unit] +Description=Git Repositories Clean Up + +[Service] +Type=oneshot +ExecStart=/usr/bin/dist-git-gc + +[Install] +WantedBy=multi-user.target diff --git a/configs/systemd/dist-git-gc.timer b/configs/systemd/dist-git-gc.timer new file mode 100644 index 0000000..fbdfcf9 --- /dev/null +++ b/configs/systemd/dist-git-gc.timer @@ -0,0 +1,8 @@ +[Unit] +Description=Git Repositories Clean Up Timer + +[Timer] +OnCalendar=monthly + +[Install] +WantedBy=timers.target diff --git a/dist-git.spec b/dist-git.spec index fc770fd..cb1ceb9 100644 --- a/dist-git.spec +++ b/dist-git.spec @@ -165,6 +165,7 @@ ln -s %{_datadir}/dist-git/setup_git_package %{buildroot}%{_bindir}/setup_git_pa ln -s %{_datadir}/dist-git/mkbranch %{buildroot}%{_bindir}/mkbranch ln -s %{_datadir}/dist-git/mkbranch_branching %{buildroot}%{_bindir}/mkbranch_branching ln -s %{_datadir}/dist-git/remove_unused_sources %{buildroot}%{_bindir}/remove_unused_sources +mv %{buildroot}%{_datadir}/dist-git/dist-git-gc %{buildroot}%{_bindir}/dist-git-gc # ------------------------------------------------------------------------------ # SELinux @@ -226,6 +227,8 @@ fi %{_unitdir}/dist-git@.service %{_unitdir}/dist-git.socket +%{_unitdir}/dist-git-gc.service +%{_unitdir}/dist-git-gc.timer # ------------------------------------------------------------------------------ # /var/lib/ ...... dynamic persistent files diff --git a/scripts/dist-git/dist-git-gc b/scripts/dist-git/dist-git-gc new file mode 100755 index 0000000..4e5547d --- /dev/null +++ b/scripts/dist-git/dist-git-gc @@ -0,0 +1,11 @@ +#!/usr/bin/bash +# Cleanup unnecessary files +# The default DEPTH is 2 because the directory path is /var/lib/dist-git/git/rpms/ + +REPODIR=$(crudini --get dist-git.conf dist-git gitroot_dir) +DEPTH=$(crudini --get dist-git.conf dist-git git_gc_depth) + +find "$REPODIR" -mindepth "$DEPTH" -maxdepth "$DEPTH" -type d | + while read -r DIRECTORY; do + (cd "$DIRECTORY" && git gc) + done