diff --git a/roles/aurweb/tasks/main.yml b/roles/aurweb/tasks/main.yml
index 1264f0c117738ec81b2a623b20a01e122bc328df..300cdb1f0d20962fbd84b2f739e00fcf8e7afca0 100644
--- a/roles/aurweb/tasks/main.yml
+++ b/roles/aurweb/tasks/main.yml
@@ -205,6 +205,10 @@
     state: link
   when: release.changed
 
+- name: Install aurweb-git-gc script
+  template: src=aurweb-git-gc.sh.j2 dest=/usr/local/bin/aurweb-git-gc.sh owner=root group=root mode=0755
+  when: release.changed
+
 - name: Generate HTML documentation
   make:
     chdir: "{{ aurweb_dir }}/doc"
diff --git a/roles/aurweb/templates/aurweb-git-gc.sh.j2 b/roles/aurweb/templates/aurweb-git-gc.sh.j2
new file mode 100644
index 0000000000000000000000000000000000000000..29fc249740ebcc3adcf1b8713ee9c46be8e3d259
--- /dev/null
+++ b/roles/aurweb/templates/aurweb-git-gc.sh.j2
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+find {{ aurweb_dir }} -maxdepth 1 -type d -name "*.git" -execdir sh -c 'cd {} && git gc' \;
diff --git a/roles/aurweb/templates/aurweb-git.service.j2 b/roles/aurweb/templates/aurweb-git.service.j2
index 8fb3f47b7cf85c5735afa399199b0651170efdff..ce8c501fe81bf23d58b2eca9ec95f4cf2e215e15 100644
--- a/roles/aurweb/templates/aurweb-git.service.j2
+++ b/roles/aurweb/templates/aurweb-git.service.j2
@@ -4,6 +4,6 @@ Description=Git gc AUR
 [Service]
 Type=oneshot
 User={{ aurweb_user }}
-WorkingDirectory={{ aurweb_git_dir }}
-ExecStart=/usr/bin/git gc
+WorkingDirectory={{ aurweb_dir }}
+ExecStart=/usr/local/bin/aurweb-git-gc.sh
 Nice=5