diff --git a/group_vars/all/archusers.yml b/group_vars/all/archusers.yml
index 8c44518a1546111ef371551c0ffdc5a4a98475c1..f9c16d7001ba0c9f9cb01a2ca78f6860acb1e577 100644
--- a/group_vars/all/archusers.yml
+++ b/group_vars/all/archusers.yml
@@ -22,6 +22,7 @@ arch_users:
     groups:
       - tu
       - packager
+      - junior-packager
   alad:
     name: "Alad Wenter"
     email: "alad@archlinux.org"
@@ -38,6 +39,7 @@ arch_users:
     groups:
       - tu
       - packager
+      - junior-packager
   alex19ep:
     name: "Alexander Epaneshnikov"
     email: "alex19ep@archlinux.org"
@@ -46,6 +48,7 @@ arch_users:
       - tu
       - multilib
       - packager
+      - junior-packager
   allan:
     name: "Allan McRae"
     email: "allan@archlinux.org"
@@ -60,34 +63,42 @@ arch_users:
     ssh_key: alucryd.pub
     groups:
       - dev
+      - junior-dev
       - tu
       - multilib
       - packager
+      - junior-packager
   artafinde:
     name: "Leonidas Spyropoulos"
     email: "artafinde@archlinux.org"
     ssh_key: "artafinde.pub"
     groups:
       - dev
+      - junior-dev
       - multilib
       - tu
       - packager
+      - junior-packager
   anatolik:
     name: "Anatol Pomozov"
     email: "anatolik@archlinux.org"
     ssh_key: anatolik.pub
     groups:
       - dev
+      - junior-dev
       - tu
       - multilib
       - packager
+      - junior-packager
   andrew:
     name: "Andrew Gregory"
     email: "andrew@archlinux.org"
     ssh_key: andrew.pub
     groups:
       - dev
+      - junior-dev
       - packager
+      - junior-packager
   andrewsc:
     name: "Andrew Crerar"
     email: "crerar@archlinux.org"
@@ -95,6 +106,7 @@ arch_users:
     groups:
       - tu
       - packager
+      - junior-packager
   anthraxx:
     name: "Levente Polyak"
     email: "anthraxx@archlinux.org"
@@ -102,17 +114,21 @@ arch_users:
     shell: /bin/zsh
     groups:
       - dev
+      - junior-dev
       - tu
       - multilib
       - packager
+      - junior-packager
   andyrtr:
     name: "Andreas Radke"
     email: "andyrtr@archlinux.org"
     ssh_key: andyrtr.pub
     groups:
       - dev
+      - junior-dev
       - tu
       - packager
+      - junior-packager
   antiz:
     name: "Robin Candau"
     email: "antiz@archlinux.org"
@@ -120,6 +136,7 @@ arch_users:
     groups:
       - tu
       - packager
+      - junior-packager
   archange:
     name: "Bruno Pagani"
     email: "archange@archlinux.org"
@@ -129,6 +146,7 @@ arch_users:
       - tu
       - multilib
       - packager
+      - junior-packager
   arodseth:
     name: "Alexander Rødseth"
     email: "xyproto@archlinux.org"
@@ -137,12 +155,16 @@ arch_users:
       - tu
       - multilib
       - packager
+      - junior-packager
   arojas:
     name: "Antonio Rojas"
     email: "arojas@archlinux.org"
     ssh_key: arojas.pub
     groups:
+      - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   aur-notify:
@@ -154,6 +176,7 @@ arch_users:
     ssh_key: bastelfreak.pub
     groups:
       - packager
+      - junior-packager
       - tu
   bgyorgy:
     name: "Balló György"
@@ -161,6 +184,7 @@ arch_users:
     ssh_key: bgyorgy.pub
     groups:
       - packager
+      - junior-packager
       - tu
   blakkheim:
     name: "T.J. Townsend"
@@ -168,6 +192,7 @@ arch_users:
     ssh_key: blakkheim.pub
     groups:
       - packager
+      - junior-packager
       - tu
   bluewind:
     name: "Florian Pritz"
@@ -176,7 +201,9 @@ arch_users:
     shell: /bin/zsh
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   braindamage:
@@ -192,6 +219,7 @@ arch_users:
     ssh_key: cbehan.pub
     groups:
       - packager
+      - junior-packager
       - tu
   coderobe:
     name: "Robin Broda"
@@ -199,6 +227,7 @@ arch_users:
     ssh_key: coderobe.pub
     groups:
       - packager
+      - junior-packager
       - tu
   daurnimator:
     name: "Daurnimator"
@@ -206,6 +235,7 @@ arch_users:
     ssh_key: daurnimator.pub
     groups:
       - packager
+      - junior-packager
       - tu
   dbermond:
     name: "Daniel Bermond"
@@ -213,6 +243,7 @@ arch_users:
     ssh_key: dbermond.pub
     groups:
       - packager
+      - junior-packager
       - tu
   demize:
     name: "Johannes Löthberg"
@@ -221,7 +252,9 @@ arch_users:
     shell: /bin/zsh
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   denisse:
@@ -244,7 +277,9 @@ arch_users:
     ssh_key: diabonas.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
   donate:
     name: ""
@@ -255,7 +290,9 @@ arch_users:
     ssh_key: dvzrv.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - multilib
       - tu
   edh:
@@ -271,6 +308,7 @@ arch_users:
     ssh_key: escondida.pub
     groups:
       - packager
+      - junior-packager
       - tu
   eworm:
     name: "Christian Hesse"
@@ -279,7 +317,9 @@ arch_users:
     shell: /bin/zsh
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   farseerfc:
@@ -288,6 +328,7 @@ arch_users:
     ssh_key: farseerfc.pub
     groups:
       - packager
+      - junior-packager
       - tu
   felixonmars:
     name: "Felix Yan"
@@ -295,7 +336,9 @@ arch_users:
     ssh_key: felixonmars.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   ffy00:
@@ -305,6 +348,7 @@ arch_users:
     shell: /bin/bash
     groups:
       - packager
+      - junior-packager
       - tu
   flyingpig:
     name: "Sibo Dong"
@@ -323,7 +367,9 @@ arch_users:
           - build.archlinux.org
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   foxboron:
@@ -332,7 +378,9 @@ arch_users:
     ssh_key: foxboron.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
   foxxx0:
     name: "Thore Bödecker"
@@ -341,6 +389,7 @@ arch_users:
     shell: /bin/zsh
     groups:
       - packager
+      - junior-packager
       - tu
   gitlab:
     name: ""
@@ -351,6 +400,7 @@ arch_users:
     ssh_key: grawlinson.pub
     groups:
       - packager
+      - junior-packager
       - tu
   grazzolini:
     name: "Giancarlo Razzolini"
@@ -358,7 +408,9 @@ arch_users:
     ssh_key: grazzolini.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - multilib
       - tu
   gromit:
@@ -367,6 +419,7 @@ arch_users:
     ssh_key: gromit.pub
     groups:
       - packager
+      - junior-packager
       - tu
   hashworks:
     name: "Justin Kromlinger"
@@ -375,6 +428,7 @@ arch_users:
     shell: /bin/zsh
     groups:
       - packager
+      - junior-packager
       - tu
     additional_ssh_keys:
       - name: hashworks_yubikey_5_nfc.pub
@@ -390,7 +444,9 @@ arch_users:
           - homedir.archlinux.org
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   idevolder:
@@ -399,6 +455,7 @@ arch_users:
     ssh_key: idevolder.pub
     groups:
       - packager
+      - junior-packager
       - tu
   jelle:
     name: "Jelle van der Waa"
@@ -406,7 +463,9 @@ arch_users:
     ssh_key: jelle.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   jleclanche:
@@ -416,6 +475,7 @@ arch_users:
     shell: /bin/zsh
     groups:
       - packager
+      - junior-packager
       - tu
   jlichtblau:
     name: "Jaroslav Lichtblau"
@@ -423,6 +483,7 @@ arch_users:
     ssh_key: jlichtblau.pub
     groups:
       - packager
+      - junior-packager
       - tu
   jouke:
     name: "Jouke Witteveen"
@@ -435,6 +496,7 @@ arch_users:
     ssh_key: jsteel.pub
     groups:
       - packager
+      - junior-packager
       - tu
   juergen:
     name: "Jürgen Hötzel"
@@ -442,7 +504,9 @@ arch_users:
     ssh_key: juergen.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - multilib
       - tu
   kewl:
@@ -458,7 +522,9 @@ arch_users:
     ssh_key: kgizdov.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
   klausenbusk:
     name: "Kristian Klausen"
@@ -480,7 +546,9 @@ arch_users:
     ssh_key: lcarlier.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   lfleischer:
@@ -490,7 +558,9 @@ arch_users:
     shell: /bin/zsh
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   maximbaz:
@@ -503,6 +573,7 @@ arch_users:
           - homedir.archlinux.org
     groups:
       - packager
+      - junior-packager
       - tu
   mtorromeo:
     name: "Massimiliano Torromeo"
@@ -510,6 +581,7 @@ arch_users:
     ssh_key: mtorromeo.pub
     groups:
       - packager
+      - junior-packager
       - tu
   muflone:
     name: "Fabio Castelli"
@@ -517,6 +589,7 @@ arch_users:
     ssh_key: muflone.pub
     groups:
       - packager
+      - junior-packager
       - tu
   neitsab:
     name: "Bastien Traverse"
@@ -531,6 +604,7 @@ arch_users:
     ssh_key: nicohood.pub
     groups:
       - packager
+      - junior-packager
       - tu
   orhun:
     name: "Orhun Parmaksiz"
@@ -538,6 +612,7 @@ arch_users:
     ssh_key: orhun.pub
     groups:
       - packager
+      - junior-packager
       - tu
   pierre:
     name: "Pierre Schmitz"
@@ -545,7 +620,9 @@ arch_users:
     ssh_key: pierre.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - multilib
       - tu
   pitastrudl:
@@ -561,6 +638,7 @@ arch_users:
     ssh_key: polyzen.pub
     groups:
       - packager
+      - junior-packager
       - tu
   remy:
     name: "Rémy Oudompheng"
@@ -568,7 +646,9 @@ arch_users:
     ssh_key: remy.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
   sangy:
     name: "Santiago Torres-Arias"
@@ -576,6 +656,7 @@ arch_users:
     ssh_key: sangy.pub
     groups:
       - packager
+      - junior-packager
       - tu
   morganamilo:
     name: "Morgan Adamiec"
@@ -583,6 +664,7 @@ arch_users:
     ssh_key: morganamilo.pub
     groups:
       - packager
+      - junior-packager
       - tu
   freswa:
     name: "Frederik Schwan"
@@ -590,7 +672,9 @@ arch_users:
     ssh_key: freswa.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   seblu:
@@ -600,7 +684,9 @@ arch_users:
     shell: /bin/zsh
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   serebit:
@@ -609,6 +695,7 @@ arch_users:
     ssh_key: serebit.pub
     groups:
       - packager
+      - junior-packager
       - tu
   shibumi:
     name: "Christian Rebischke"
@@ -617,6 +704,7 @@ arch_users:
     shell: /bin/zsh
     groups:
       - packager
+      - junior-packager
       - tu
   skydiver:
     name: "Xiao Guo"
@@ -631,6 +719,7 @@ arch_users:
     ssh_key: kpcyrd.pub
     groups:
       - packager
+      - junior-packager
       - tu
       - multilib
   raster:
@@ -639,6 +728,7 @@ arch_users:
     ssh_key: raster.pub
     groups:
       - packager
+      - junior-packager
       - tu
   rgacogne:
     name: "Remi Rgacogne"
@@ -646,6 +736,7 @@ arch_users:
     ssh_key: rgacogne.pub
     groups:
       - packager
+      - junior-packager
       - tu
   spupykin:
     name: "Sergej Pupykin"
@@ -653,6 +744,7 @@ arch_users:
     ssh_key: spupykin.pub
     groups:
       - packager
+      - junior-packager
       - tu
       - multilib
   segaja:
@@ -661,6 +753,7 @@ arch_users:
     ssh_key: segaja.pub
     groups:
       - packager
+      - junior-packager
       - tu
   svenstaro:
     name: "Sven-Hendrik Haase"
@@ -668,7 +761,9 @@ arch_users:
     ssh_key: svenstaro.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - tu
       - multilib
   torxed:
@@ -677,6 +772,7 @@ arch_users:
     ssh_key: torxed.pub
     groups:
       - packager
+      - junior-packager
       - tu
   tpkessler:
     name: "Torsten Keßler"
@@ -684,6 +780,7 @@ arch_users:
     ssh_key: tpkessler.pub
     groups:
       - packager
+      - junior-packager
       - tu
   tpowa:
     name: "Tobias Powalowski"
@@ -691,7 +788,9 @@ arch_users:
     ssh_key: tpowa.pub
     groups:
       - packager
+      - junior-packager
       - dev
+      - junior-dev
       - multilib
       - tu
   wild:
@@ -700,6 +799,7 @@ arch_users:
     ssh_key: wild.pub
     groups:
       - packager
+      - junior-packager
       - tu
   xyne:
     name: "Xyne"
@@ -707,6 +807,7 @@ arch_users:
     ssh_key: xyne.pub
     groups:
       - packager
+      - junior-packager
       - tu
   yan12125:
     name: "Chih-Hsuan Yen"
@@ -714,6 +815,7 @@ arch_users:
     ssh_key: yan12125.pub
     groups:
       - packager
+      - junior-packager
       - multilib
       - tu
 
diff --git a/playbooks/tasks/include/post-upgrade/gemini.archlinux.org.yml b/playbooks/tasks/include/post-upgrade/gemini.archlinux.org.yml
index d3d6ce08a3efbb74bfb05894d219b7b68ce97910..980404a66cb51bc34801ffed921486a72f97bc03 100644
--- a/playbooks/tasks/include/post-upgrade/gemini.archlinux.org.yml
+++ b/playbooks/tasks/include/post-upgrade/gemini.archlinux.org.yml
@@ -7,11 +7,3 @@
   when:
     - who is changed
     - who.stdout_lines|length > 1
-
-- name: Stop arch-svntogit.timer
-  service: name=arch-svntogit.timer state=stopped
-
-- name: Wait for svntogit to finish
-  wait_for:
-    path: /srv/svntogit/update-repos.sh.lock
-    state: absent
diff --git a/roles/common/templates/pacman.conf.j2 b/roles/common/templates/pacman.conf.j2
index 2f589852f24a912ae53d4c0da7046c32c65577ac..0a8aaf376afc121441868c780a3e51f9055abbd8 100644
--- a/roles/common/templates/pacman.conf.j2
+++ b/roles/common/templates/pacman.conf.j2
@@ -12,7 +12,7 @@
 #RootDir     = /
 #DBPath      = /var/lib/pacman/
 {% if 'mirrors' in group_names or inventory_hostname in ['gemini.archlinux.org', 'build.archlinux.org'] %}
-CacheDir     = /var/cache/pacman/pkg/ /srv/ftp/pool/packages/ /srv/ftp/pool/community/
+CacheDir     = /var/cache/pacman/pkg/ /srv/ftp/pool/packages/
 {% else %}
 #CacheDir    = /var/cache/pacman/pkg/
 {% endif %}
@@ -72,7 +72,7 @@ LocalFileSigLevel = Optional
 # repo name header and Include lines. You can add preferred servers immediately
 # after the header, and they will be used before the default mirrors.
 
-[testing]
+[core-testing]
 Usage=Search Sync
 Include = /etc/pacman.d/mirrorlist
 
@@ -82,13 +82,10 @@ Include = /etc/pacman.d/mirrorlist
 [extra]
 Include = /etc/pacman.d/mirrorlist
 
-[community-testing]
+[extra-testing]
 Usage=Search Sync
 Include = /etc/pacman.d/mirrorlist
 
-[community]
-Include = /etc/pacman.d/mirrorlist
-
 # If you want to run 32 bit applications on your x86_64 system,
 # enable the multilib repositories as required here.
 
diff --git a/roles/dbscripts/defaults/main.yml b/roles/dbscripts/defaults/main.yml
index 24ec687305e4a61a96261708fd30e84a669a68f3..344cee87910b513dd33106a91c76c925b0f3b3b0 100644
--- a/roles/dbscripts/defaults/main.yml
+++ b/roles/dbscripts/defaults/main.yml
@@ -1,19 +1,38 @@
-dbscripts_commit: 20220131
+dbscripts_commit: 16a748c71c3799b12981f64fedf014881160527f
 dbscripts_update: true
-dbscripts_pgp_emails: ['jelle@archlinux.org']
+dbscripts_pgp_emails: ['jelle@archlinux.org', 'anthraxx@archlinux.org']
 
-community_repos:
-  - community-debug
-  - community-testing-debug
-  - community-staging-debug
-  - multilib-debug
+git_state_repo: /srv/repos/state
+git_pkg_cache: /srv/repos/pkg-cache
+
+junior_multilib_repos:
+  - multilib-staging
+  - multilib-testing
   - multilib-staging-debug
   - multilib-testing-debug
 
-package_repos:
+multilib_repos:
+  - multilib
+  - multilib-debug
+
+junior_developer_repos:
+  - core-testing
+  - core-staging
+  - core-testing-debug
+  - core-staging-debug
+
+developer_repos:
+  - core
   - core-debug
+
+junior_packager_repos:
+  - extra-testing
+  - extra-staging
+  - extra-testing-debug
+  - extra-staging-debug
+
+packager_repos:
+  - extra
   - extra-debug
-  - testing-debug
-  - staging-debug
   - kde-unstable-debug
   - gnome-unstable-debug
diff --git a/roles/dbscripts/files/arch-svntogit.service b/roles/dbscripts/files/arch-svntogit.service
deleted file mode 100644
index d1559cdc6ec2c140b36952b2d61b8ce6d4bf0f64..0000000000000000000000000000000000000000
--- a/roles/dbscripts/files/arch-svntogit.service
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-Description=arch-svntogit
-
-[Service]
-Type=oneshot
-User=svntogit
-ExecStart=/srv/svntogit/update-repos.sh
diff --git a/roles/dbscripts/files/arch-svntogit.timer b/roles/dbscripts/files/arch-svntogit.timer
deleted file mode 100644
index c4842107c55c58d7ce0c1e4756eff515c4533227..0000000000000000000000000000000000000000
--- a/roles/dbscripts/files/arch-svntogit.timer
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=arch-svntogit
-
-[Timer]
-OnBootSec=3min
-OnUnitActiveSec=5min
-
-[Install]
-WantedBy=timers.target
diff --git a/roles/dbscripts/files/cleanup.service b/roles/dbscripts/files/cleanup.service
index e2695bc19995d8f1563cf00201ceeda98ff5342b..7f4fe35ae685a7a9f2aa252394dd9fcebd51b41f 100644
--- a/roles/dbscripts/files/cleanup.service
+++ b/roles/dbscripts/files/cleanup.service
@@ -4,8 +4,7 @@ Description=Cleanup
 [Service]
 Type=oneshot
 User=cleanup
-ExecStart=/srv/repos/svn-community/dbscripts/cron-jobs/ftpdir-cleanup
-ExecStart=/srv/repos/svn-packages/dbscripts/cron-jobs/ftpdir-cleanup
+ExecStart=/srv/repos/git-packages/dbscripts/cron-jobs/ftpdir-cleanup
 
 CapabilityBoundingSet=
 PrivateDevices=true
@@ -14,4 +13,4 @@ NoNewPrivileges=true
 ProtectSystem=strict
 ProtectHome=true
 PrivateTmp=true
-ReadWritePaths=/srv/ftp/ /srv/repos/svn-community /srv/repos/svn-packages
+ReadWritePaths=/srv/ftp/ /srv/repos/git-packages
diff --git a/roles/dbscripts/files/createlinks b/roles/dbscripts/files/createlinks
index 302725b56b158e02548b52e2fd43f820eda2a9e1..18b43c8e9750f2235afcff784327642f6e997fa1 100755
--- a/roles/dbscripts/files/createlinks
+++ b/roles/dbscripts/files/createlinks
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 target="/srv/ftp"
-repos=('core' 'extra' 'community' 'testing' 'community-testing' 'staging' 'community-staging' 'multilib' 'multilib-testing' 'multilib-staging' 'gnome-unstable' 'kde-unstable')
+repos=('core' 'core-testing' 'core-staging' 'extra' 'extra-testing' 'extra-staging' 'multilib' 'multilib-testing' 'multilib-staging' 'gnome-unstable' 'kde-unstable')
 arches=('x86_64')
 lock='/tmp/links.lck'
 tmp="$(mktemp -d)"
diff --git a/roles/dbscripts/files/integrity-check.service b/roles/dbscripts/files/integrity-check.service
index 0a56486154224aaacc46304792852868589638a9..dda176567c4f77a34f512d3db6e7c29329e4376d 100644
--- a/roles/dbscripts/files/integrity-check.service
+++ b/roles/dbscripts/files/integrity-check.service
@@ -4,4 +4,4 @@ Description=Integrity Check
 [Service]
 Type=oneshot
 User=svn-packages
-ExecStart=/srv/repos/svn-packages/dbscripts/cron-jobs/integrity-check arch-notifications@archlinux.org,arch-dev-public@archlinux.org
+ExecStart=/srv/repos/git-packages/dbscripts/cron-jobs/integrity-check arch-notifications@archlinux.org,arch-dev-public@archlinux.org
diff --git a/roles/dbscripts/files/sourceballs.service b/roles/dbscripts/files/sourceballs.service
index 63bd4983d15c05b4c9ef527a8e178915fbab1092..87b553e7fc9a62497279d59d0d6a2ad75f8e5016 100644
--- a/roles/dbscripts/files/sourceballs.service
+++ b/roles/dbscripts/files/sourceballs.service
@@ -4,5 +4,4 @@ Description=Sourceballs
 [Service]
 Type=oneshot
 User=sourceballs
-ExecStart=/srv/repos/svn-community/dbscripts/cron-jobs/sourceballs
-ExecStart=/srv/repos/svn-packages/dbscripts/cron-jobs/sourceballs
+ExecStart=/srv/repos/git-packages/dbscripts/cron-jobs/sourceballs
diff --git a/roles/dbscripts/files/sudoers.d b/roles/dbscripts/files/sudoers.d
index a5a9a0cd26253dffcef59bbb181e37e6a3c4c5f5..dd76258a9f91624a9d1f68b0c667ee813a69c936 100644
--- a/roles/dbscripts/files/sudoers.d
+++ b/roles/dbscripts/files/sudoers.d
@@ -1,11 +1,7 @@
-%dev ALL=(svn-packages) NOPASSWD:/usr/bin/svnserve
-%dev ALL=(svn-packages) NOPASSWD:/usr/bin/svn
-#%dev ALL=(svn-community) NOPASSWD:/usr/bin/svnserve
-%tu ALL=(svn-community) NOPASSWD:/usr/bin/svnserve
-%tu ALL=(svn-community) NOPASSWD:/usr/bin/svn
-
 %dev ALL = (archive) NOPASSWD: /packages/db-archive
-%tu  ALL = (archive) NOPASSWD: /community/db-archive
+%junior-dev ALL = (archive) NOPASSWD: /packages/db-archive
+%packager ALL = (archive) NOPASSWD: /packages/db-archive
+%junior-packager ALL = (archive) NOPASSWD: /packages/db-archive
 
 sourceballs ALL=(svn-community) NOPASSWD:/usr/bin/svn
 sourceballs ALL=(svn-packages) NOPASSWD:/usr/bin/svn
diff --git a/roles/dbscripts/files/update-repos.sh b/roles/dbscripts/files/update-repos.sh
deleted file mode 100644
index cadbc7333714380017ace2dbf5893d6831a7ce16..0000000000000000000000000000000000000000
--- a/roles/dbscripts/files/update-repos.sh
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/bin/bash -eC
-
-REPO_HOME=/srv/svntogit/repos
-REPOS=(packages community)
-REMOTE=public
-LOCKFILE="$0.lock"
-
-update_pkg() {
-	local pkg=$1
-
-	if git show master:$pkg &>/dev/null; then
-		if ! git show-ref -q --verify refs/heads/packages/$pkg; then
-			# Added package; create package branch
-			git branch packages/$pkg master
-			git filter-branch -f --subdirectory-filter $pkg packages/$pkg \
-				>/dev/null
-		else
-			# Updated package; apply changes to package branch
-			git checkout -q packages/$pkg
-			git format-patch -k --stdout last-commit-processed..master -- $pkg |
-				git am -k -p2 --keep-cr --committer-date-is-author-date \
-					&>/dev/null
-		fi
-	else
-		# Deleted package; destroy the branch and stop processing this package
-		git branch -D packages/$pkg &>/dev/null || true
-		git push -q --delete $REMOTE packages/$pkg &>/dev/null || true
-		return 0
-	fi
-}
-
-# Rather simple locking mechanism
-echo $$ >"$LOCKFILE"
-
-for repo in ${REPOS[@]}; do
-	echo "==> Updating '$repo' Git repository on $(date -u)"
-
-	pushd "$REPO_HOME/$repo" >/dev/null
-
-	# Make sure we have a last-commit-processed tag to work from
-	if ! git show-ref -q --verify refs/tags/last-commit-processed; then
-		echo "==> ERR: Couldn't update '$repo' Git repository;" \
-			"missing last-commit-processed tag" >&2
-		# Skip to the next repo
-		continue
-	fi
-
-	# Make sure we're on the master branch
-	git checkout -q master
-
-	echo '  -> Fetching changes from SVN'
-	if ! git svn rebase &>/dev/null; then
-		echo '    > git svn rebase command failed; skipping to next repository'
-		echo "==> Aborted updating '$repo' on $(date -u)"
-		echo
-		popd >/dev/null
-		continue
-	fi
-
-	echo '  -> Updating package branches'
-	pkgs=($(git diff --name-only --no-renames last-commit-processed |
-		cut -d'/' -f1 | uniq))
-	pkg_count=${#pkgs[@]}
-
-	if ((pkg_count)); then
-		# Update each package branch
-		for pkg in ${pkgs[@]}; do
-			echo "    > Updating package branch for '$pkg'"
-			update_pkg $pkg
-		done
-
-		# Return to the master branch
-		git checkout -q master
-
-		echo "  -> Updated $pkg_count package branches"
-
-		echo '  -> Updating public Git repository'
-		if ! git push -q --all $REMOTE &>/dev/null; then
-			echo '    > git push command failed'
-		fi
-	else
-		echo '    > No updates found'
-	fi
-
-	echo '  -> Tagging last commit processed'
-	git tag -f last-commit-processed >/dev/null
-
-	popd >/dev/null
-
-	echo "==> Finished updating '$repo' on $(date -u)"
-	echo
-done
-
-# Remove lock
-rm "$LOCKFILE"
-
-# vim:set ts=4 sw=4 noet:
diff --git a/roles/dbscripts/tasks/main.yml b/roles/dbscripts/tasks/main.yml
index 35fedd09070ceeca143c91c94f723357cc8e2add..529256dd5f0fbca6715fc17f9da2c789f8765fa0 100644
--- a/roles/dbscripts/tasks/main.yml
+++ b/roles/dbscripts/tasks/main.yml
@@ -1,5 +1,5 @@
-- name: Install svn, git, rsync and some perl stuff
-  pacman: name=git,subversion,rsync,perl-dbd-pg,perl-timedate,diffstat state=present
+- name: Install git, rsync and some perl stuff
+  pacman: name=git,rsync,perl-dbd-pg,perl-timedate,diffstat state=present
 
 - name: Install sourceballs requirements (makepkg download dependencies)
   pacman: name=git,subversion,mercurial,breezy state=present
@@ -10,11 +10,10 @@
 - name: Create dbscripts users
   user: name="{{ item }}" shell=/bin/bash
   with_items:
-    - svn-packages
-    - svn-community
+    - git-packages
 
 - name: Add cleanup user
-  user: name=cleanup groups=tu,dev,multilib shell=/sbin/nologin
+  user: name=cleanup groups=junior-dev,dev,junior-packager,packager,multilib shell=/sbin/nologin
 
 - name: Add sourceballs user
   user: name=sourceballs shell=/sbin/nologin
@@ -47,24 +46,6 @@
     state: present
   with_dict: "{{ arch_users }}"
 
-- name: Create .ssh directory
-  file: path=/home/svn-packages/.ssh state=directory owner=svn-packages group=svn-packages mode=0700
-
-- name: Configure ssh keys for devs
-  template: src=authorized_keys-group.j2 dest=/home/svn-packages/.ssh/authorized_keys owner=svn-packages group=svn-packages mode=600
-  vars:
-    pubkey_groups: ['dev']
-  tags: ['archusers']
-
-- name: Create .ssh directory
-  file: path=/home/svn-community/.ssh state=directory owner=svn-community group=svn-community mode=0700
-
-- name: Configure ssh keys for TUs
-  template: src=authorized_keys-group.j2 dest=/home/svn-community/.ssh/authorized_keys owner=svn-community group=svn-community mode=600
-  vars:
-    pubkey_groups: ['tu']
-  tags: ['archusers']
-
 - name: Create /etc/dbscripts directory
   file: path=/etc/dbscripts state=directory owner=root group=root mode=0755
 
@@ -78,7 +59,7 @@
   dbscripts_mkdirs:
     pathtmpl: '/home/{user}/staging/{dirname}'
     permissions: '755'
-    directories: ['', 'core', 'extra', 'testing', 'staging', 'community', 'community-staging', 'community-testing', 'multilib', 'multilib-staging', 'multilib-testing']
+    directories: ['', 'core', 'extra', 'multilib', 'multilib-staging', 'multilib-testing', 'core-testing', 'core-staging', 'extra-testing', 'extra-staging']
     users: "{{ arch_users.keys() | list }}"
     group: users
   tags: ["archusers"]
@@ -86,77 +67,64 @@
 - name: Create dbscripts paths
   file: path="{{ item }}" state=directory owner=root group=root mode=0755
   with_items:
-    - /srv/repos/svn-community
-    - /srv/repos/svn-packages
-
-- name: Create svn-community/package-cleanup directory
-  file: path="/srv/repos/svn-community/package-cleanup" state=directory owner=svn-community group=tu mode=0775
-- name: Add acl user:cleanup:rwx to /srv/repos/svn-community/package-cleanup
-  acl: name=/srv/repos/svn-community/package-cleanup entry="user:cleanup:rwx" state=present
-- name: Add acl default:user::rwx to /srv/repos/svn-community/package-cleanup
-  acl: name=/srv/repos/svn-community/package-cleanup entry="default:user::rwx" state=present
-- name: Add acl default:user:cleanup:rwx to /srv/repos/svn-community/package-cleanup
-  acl: name=/srv/repos/svn-community/package-cleanup entry="default:user:cleanup:rwx" state=present
-- name: Add acl default:group::rwx to /srv/repos/svn-community/package-cleanup
-  acl: name=/srv/repos/svn-community/package-cleanup entry="default:group::rwx" state=present
-- name: Add acl default:other::r-x to /srv/repos/svn-community/package-cleanup
-  acl: name=/srv/repos/svn-community/package-cleanup entry="default:other::r-x" state=present
-
-- name: Create svn-packages/package-cleanup directory
-  file: path="/srv/repos/svn-packages/package-cleanup" state=directory owner=svn-packages group=dev mode=0775
-- name: Add acl user:cleanup:rwx to /srv/repos/svn-packages/package-cleanup
-  acl: name=/srv/repos/svn-packages/package-cleanup entry="user:cleanup:rwx" state=present
-- name: Add acl default:user::rwx to /srv/repos/svn-packages/package-cleanup
-  acl: name=/srv/repos/svn-packages/package-cleanup entry="default:user::rwx" state=present
-- name: Add acl default:user:cleanup:rwx to /srv/repos/svn-packages/package-cleanup
-  acl: name=/srv/repos/svn-packages/package-cleanup entry="default:user:cleanup:rwx" state=present
-- name: Add acl default:group::rwx to /srv/repos/svn-packages/package-cleanup
-  acl: name=/srv/repos/svn-packages/package-cleanup entry="default:group::rwx" state=present
-- name: Add acl default:other::r-x to /srv/repos/svn-packages/package-cleanup
-  acl: name=/srv/repos/svn-packages/package-cleanup entry="default:other::r-x" state=present
-
-- name: Create svn-community/source-cleanup directory
-  file: path="/srv/repos/svn-community/source-cleanup" state=directory owner=sourceballs group=svn-community mode=0755
-- name: Create svn-packages/source-cleanup directory
-  file: path="/srv/repos/svn-packages/source-cleanup" state=directory owner=sourceballs group=svn-packages mode=0755
-
-- name: Create svn-community/svn directory
-  file: path="/srv/repos/svn-community/svn" state=directory owner=svn-community group=svn-community mode=0755
-- name: Add acl default:user::rwx to /srv/repos/svn-community/svn
-  acl: name=/srv/repos/svn-community/svn entry="default:user::rwx" state=present
-- name: Add acl default:group::r-x to /srv/repos/svn-community/svn
-  acl: name=/srv/repos/svn-community/svn entry="default:group::r-x" state=present
-- name: Add acl default:other::r-x to /srv/repos/svn-community/svn
-  acl: name=/srv/repos/svn-community/svn entry="default:other::r-x" state=present
-
-- name: Create svn-packages/svn directory
-  file: path="/srv/repos/svn-packages/svn" state=directory owner=svn-packages group=svn-packages mode=0755
-- name: Add acl default:user::rwx to /srv/repos/svn-packages/svn
-  acl: name=/srv/repos/svn-packages/svn entry="default:user::rwx" state=present
-- name: Add acl default:group::r-x to /srv/repos/svn-packages/svn
-  acl: name=/srv/repos/svn-packages/svn entry="default:group::r-x" state=present
-- name: Add acl default:other::r-x to /srv/repos/svn-packages/svn
-  acl: name=/srv/repos/svn-packages/svn entry="default:other::r-x" state=present
-
-- name: Create svn-community/tmp directory
-  file: path="/srv/repos/svn-community/tmp" state=directory owner=svn-community group=tu mode=1775
-- name: Add acl user:sourceballs:rwx to /srv/repos/svn-community/tmp
-  acl: name=/srv/repos/svn-community/tmp entry="user:sourceballs:rwx" state=present
-
-- name: Create svn-packages/tmp directory
-  file: path="/srv/repos/svn-packages/tmp" state=directory owner=svn-packages group=dev mode=1775
-- name: Add acl user:sourceballs:rwx to /srv/repos/svn-packages/tmp
-  acl: name=/srv/repos/svn-packages/tmp entry="user:sourceballs:rwx" state=present
+    - /srv/repos/git-packages
+
+- name: Create git-packages/package-cleanup directory
+  file: path="/srv/repos/git-packages/package-cleanup" state=directory owner=git-packages group=junior-packager mode=0775
+- name: Add acl user:cleanup:rwx to /srv/repos/git-packages/package-cleanup
+  acl: name=/srv/repos/git-packages/package-cleanup entry="user:cleanup:rwx" state=present
+- name: Add acl default:user::rwx to /srv/repos/git-packages/package-cleanup
+  acl: name=/srv/repos/git-packages/package-cleanup entry="default:user::rwx" state=present
+- name: Add acl default:user:cleanup:rwx to /srv/repos/git-packages/package-cleanup
+  acl: name=/srv/repos/git-packages/package-cleanup entry="default:user:cleanup:rwx" state=present
+- name: Add acl default:group::rwx to /srv/repos/git-packages/package-cleanup
+  acl: name=/srv/repos/git-packages/package-cleanup entry="default:group::rwx" state=present
+- name: Add acl default:other::r-x to /srv/repos/git-packages/package-cleanup
+  acl: name=/srv/repos/git-packages/package-cleanup entry="default:other::r-x" state=present
+
+- name: Create git-packages/source-cleanup directory
+  file: path="/srv/repos/git-packages/source-cleanup" state=directory owner=sourceballs group=git-packages mode=0755
+
+- name: Add acl default:junior-packager::rwx to /srv/repos/state
+  acl: name=/srv/repos/git-packages/package-cleanup entry="default:group:junior-packager:rwx" state=present
+
+- name: Create pkg cache directory
+  file: path="{{ git_pkg_cache }}" state=directory owner=git-packages group=junior-packager mode=0775
+
+- name: Create state directory
+  file: path="{{ git_state_repo }}" state=directory owner=git-packages group=junior-packager mode=0775
+
+- name: Set permissions for state directory
+  file: path="{{ git_state_repo }}" state=directory owner=git-packages group=junior-packager mode=0775
+- name: Add acl default:group:junior-packager:rw- to git_state_repo
+  acl: name="{{ git_state_repo }}" entry="default:group:junior-packager:rw-" state=present
+
+- name: Git init repository  # noqa command-instead-of-module
+  command: /usr/bin/git init --shared=group "{{ git_state_repo }}"
+  args:
+    creates: "{{ git_state_repo }}/.git/config"
+
+- name: Create git-packages/tmp directory
+  file: path="/srv/repos/git-packages/tmp" state=directory owner=git-packages group=junior-packager mode=1775
+- name: Add acl user:sourceballs:rwx to /srv/repos/git-packages/tmp
+  acl: name=/srv/repos/git-packages/tmp entry="user:sourceballs:rwx" state=present
+- name: Add acl user:cleanup:rwx to /srv/repos/git-packages/tmp
+  acl: name=/srv/repos/git-packages/tmp entry="user:cleanup:rwx" state=present
 
 - name: Touch /srv/ftp/lastsync file
   file: path="/srv/ftp/lastsync" state=touch owner=ftp group=ftp mode=0644
 
 - name: Touch /srv/ftp/lastupdate file
   file: path="/srv/ftp/lastupdate" state=touch owner=ftp group=ftp mode=0644
-- name: Add acl group:tu:rw- to /srv/ftp/lastupdate
-  acl: name=/srv/ftp/lastupdate entry="group:tu:rw-" state=present
+
+- name: Add acl group:dev:rw- to /srv/ftp/lastupdate
+  acl: name=/srv/ftp/lastupdate entry="group:packager:rw-" state=present
+- name: Add acl group:dev:rw- to /srv/ftp/lastupdate
+  acl: name=/srv/ftp/lastupdate entry="group:junior-packager:rw-" state=present
 - name: Add acl group:dev:rw- to /srv/ftp/lastupdate
   acl: name=/srv/ftp/lastupdate entry="group:dev:rw-" state=present
+- name: Add acl group:dev:rw- to /srv/ftp/lastupdate
+  acl: name=/srv/ftp/lastupdate entry="group:junior-dev:rw-" state=present
 
 - name: Fetch dbscripts PGP key
   command: /usr/bin/gpg --keyserver keys.openpgp.org --auto-key-locate wkd,keyserver --locate-keys {{ item }}
@@ -166,50 +134,83 @@
 
 - name: Clone dbscripts git repo
   git: >
-    dest=/srv/repos/{{ item }}/dbscripts
+    dest=/srv/repos/git-packages/dbscripts
     repo=https://gitlab.archlinux.org/archlinux/dbscripts.git
     version={{ dbscripts_commit }} update={{ dbscripts_update }}
     verify_commit=yes
+
+- name: Symlink config file
+  file: path=/srv/repos/git-packages/dbscripts/config.local src=config.local.git state=link owner=root group=root mode=0644
+
+- name: Symlink /packages to /srv/repos/git-packages/dbscripts
+  file: path=/packages src=/srv/repos/git-packages/dbscripts state=link owner=root group=root mode=0755
+
+- name: Symlink dbscript binaries to /usr/local/bin
+  file: path=/usr/local/bin/{{ item }} src=/packages/{{ item }} state=link owner=root group=root mode=0755
   with_items:
-    - svn-community
-    - svn-packages
+    - db-move
+    - db-update
+    - db-remove
+    - db-repo-add
+    - db-repo-remove
+    - testing2x
 
-- name: Make /srv/svn
-  file: path=/srv/svn state=directory owner=root group=root mode=0755
+- name: Make debug packages pool
+  file: path=/srv/ftp/pool/packages state=directory owner=root group=junior-packager mode=0775
 
-- name: Symlink /srv/svn/community to /srv/repos/svn-community/svn
-  file: path=/srv/svn/community src=/srv/repos/svn-community/svn state=link owner=root group=root mode=0755
+- name: Make debug packages-debug pool
+  file: path=/srv/ftp/pool/packages-debug state=directory owner=root group=junior-packager mode=0775
+
+- name: Make junior developer root repos
+  file: path=/srv/ftp/{{ item }}/os state=directory owner=root group=root mode=0755
+  with_items: '{{ junior_developer_repos }}'
 
-- name: Symlink /srv/svn/packages to /srv/repos/svn-packages/svn
-  file: path=/srv/svn/packages src=/srv/repos/svn-packages/svn state=link owner=root group=root mode=0755
+- name: Make junior developer repos
+  file: path=/srv/ftp/{{ item }}/os/x86_64 state=directory owner=root group=junior-dev mode=0775
+  with_items: '{{ junior_developer_repos }}'
 
-- name: Symlink /community to /srv/repos/svn-community/dbscripts
-  file: path=/community src=/srv/repos/svn-community/dbscripts state=link owner=root group=root mode=0755
+- name: Make developer root repos
+  file: path=/srv/ftp/{{ item }}/os state=directory owner=root group=root mode=0755
+  with_items: '{{ developer_repos }}'
 
-- name: Symlink /packages to /srv/repos/svn-packages/dbscripts
-  file: path=/packages src=/srv/repos/svn-packages/dbscripts state=link owner=root group=root mode=0755
+- name: Make developer repos
+  file: path=/srv/ftp/{{ item }}/os/x86_64 state=directory owner=root group=dev mode=0775
+  with_items: '{{ developer_repos }}'
 
-- name: Make debug packages-debug pool
-  file: path=/srv/ftp/pool/packages-debug state=directory owner=root group=dev mode=0775
+- name: Make junior packager root repos
+  file: path=/srv/ftp/{{ item }}/os state=directory owner=root group=root mode=0755
+  with_items: '{{ junior_packager_repos }}'
 
-- name: Make debug community-debug pool
-  file: path=/srv/ftp/pool/community-debug state=directory owner=root group=tu mode=2775
+- name: Make junior packager repos
+  file: path=/srv/ftp/{{ item }}/os/x86_64 state=directory owner=root group=junior-packager mode=0775
+  with_items: '{{ junior_packager_repos }}'
 
-- name: Make package root debug repos
+- name: Make packager root repos
   file: path=/srv/ftp/{{ item }}/os state=directory owner=root group=root mode=0755
-  with_items: '{{ package_repos }}'
+  with_items: '{{ packager_repos }}'
 
-- name: Make community root debug repos
-  file: path=/srv/ftp/{{ item }}/os state=directory owner=root group=root mode=00755
-  with_items: '{{ community_repos }}'
+- name: Make packager repos
+  file: path=/srv/ftp/{{ item }}/os/x86_64 state=directory owner=root group=packager mode=0775
+  with_items: '{{ packager_repos }}'
 
-- name: Make package debug repos
-  file: path=/srv/ftp/{{ item }}/os/x86_64 state=directory owner=root group=dev mode=0775
-  with_items: '{{ package_repos }}'
+- name: Make junior multilib root repos
+  file: path=/srv/ftp/{{ item }}/os state=directory owner=root group=root mode=0755
+  with_items: '{{ junior_multilib_repos }}'
 
-- name: Make community debug repos
-  file: path=/srv/ftp/{{ item }}/os/x86_64 state=directory owner=root group=tu mode=0775
-  with_items: '{{ community_repos }}'
+- name: Make junior multilib repos
+  file: path=/srv/ftp/{{ item }}/os/x86_64 state=directory owner=root group=junior-packager mode=0775
+  with_items: '{{ junior_multilib_repos }}'
+
+- name: Make multilib root repos
+  file: path=/srv/ftp/{{ item }}/os state=directory owner=root group=root mode=0755
+  with_items: '{{ multilib_repos }}'
+
+- name: Make multilib repos
+  file: path=/srv/ftp/{{ item }}/os/x86_64 state=directory owner=root group=packager mode=0775
+  with_items: '{{ multilib_repos }}'
+
+- name: Make /srv/ftp/other/packages available
+  file: path=/srv/ftp/other/packages state=directory owner=root group=junior-dev mode=0775
 
 - name: Put rsyncd.conf into tmpfiles
   copy: src=rsyncd-tmpfiles.d dest=/etc/tmpfiles.d/rsyncd.conf owner=root group=root mode=0644
@@ -234,73 +235,6 @@
   register: gen_rsyncd
   changed_when: "gen_rsyncd.rc == 0"
 
-- name: Install svnlog
-  copy: src=svnlog dest=/usr/local/bin/svnlog owner=root group=root mode=0755
-
-- name: Add arch-svntogit user
-  user: name=svntogit shell=/sbin/nologin home=/srv/svntogit generate_ssh_key=yes ssh_key_bits=4096
-
-- name: Configure svntogit git user name  # noqa command-instead-of-module
-  command: git config --global user.name svntogit
-  become: true
-  become_user: svntogit
-  register: git_config_username
-  changed_when: "git_config_username.rc == 0"
-
-- name: Configure svntogit git user email  # noqa command-instead-of-module
-  command: git config --global user.email svntogit@repos.archlinux.org
-  become: true
-  become_user: svntogit
-  register: git_config_email
-  changed_when: "git_config_email.rc == 0"
-
-- name: Template arch-svntogit
-  copy: src=update-repos.sh dest=/srv/svntogit/update-repos.sh owner=root group=root mode=0755
-
-- name: Create svntogit repos subdir
-  file: path="/srv/svntogit/repos" state=directory owner=svntogit group=svntogit mode=0775
-
-- name: Clone git-svn repos  # noqa command-instead-of-module
-  command: git svn clone file:///srv/repos/svn-{{ item }}/svn /srv/svntogit/repos/{{ item }} creates=/srv/svntogit/repos/{{ item }}
-  with_items:
-    - community
-    - packages
-  become: true
-  become_user: svntogit
-
-- name: Add svntogit public remotes  # noqa command-instead-of-module
-  command: git remote add public git@github.com:archlinux/svntogit-{{ item }}.git chdir=/srv/svntogit/repos/{{ item }}
-  with_items:
-    - community
-    - packages
-  become: true
-  become_user: svntogit
-  ignore_errors: true
-  register: git_public_remote
-  changed_when: "git_public_remote.rc == 0"
-
-# The following command also serves as a way to get the data the first time the repo is set up
-- name: Configure svntogit pull upstream branch  # noqa command-instead-of-module
-  command: git pull --set-upstream public master chdir=/srv/svntogit/repos/{{ item }}
-  environment:
-    SHELL: /bin/bash
-  with_items:
-    - community
-    - packages
-  become: true
-  become_user: svntogit
-  register: git_pull_upstream
-  changed_when: "git_pull_upstream.rc == 0"
-
-- name: Fix svntogit home permissions
-  file: path="/srv/svntogit" state=directory owner=svntogit group=svntogit mode=0775
-
-- name: Install repo helpers
-  copy: src={{ item }} dest=/usr/local/bin/{{ item }} owner=root group=root mode=0755
-  with_items:
-    - lsrepo
-    - checklib32
-
 - name: Install createlinks script
   copy: src=createlinks dest=/usr/local/bin/createlinks owner=root group=root mode=0755
 
@@ -313,18 +247,6 @@
   tags:
     - firewall
 
-- name: Configure svnserve
-  copy: dest=/etc/conf.d/svnserve owner=root group=root mode=0644 content="SVNSERVE_ARGS=-R -r /srv/svn\n"
-
-- name: Start and enable svnserve
-  service: name=svnserve enabled=yes state=started
-
-- name: Open firewall hole for svnserve
-  ansible.posix.firewalld: service=svn permanent=true state=enabled immediate=yes
-  when: configure_firewall
-  tags:
-    - firewall
-
 - name: Install systemd timers
   copy: src={{ item }} dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644
   with_items:
@@ -336,12 +258,8 @@
     - lastsync.service
     - gen_rsyncd.timer
     - gen_rsyncd.service
-    - arch-svntogit.timer
-    - arch-svntogit.service
     - createlinks.timer
     - createlinks.service
-  notify:
-    - Daemon reload
 
 - name: Activate systemd timers
   service: name={{ item }} enabled=yes state=started
@@ -350,5 +268,9 @@
     - sourceballs.timer
     - lastsync.timer
     - gen_rsyncd.timer
-    - arch-svntogit.timer
     - createlinks.timer
+
+# Allow different maintainers (unix users) to touch the git state repositories
+# https://git-scm.com/docs/git-config/2.35.2#Documentation/git-config.txt-safedirectory
+- name: Install gitconfig
+  copy: src=gitconfig dest=/etc/gitconfig owner=root group=root mode=0644
diff --git a/roles/dbscripts/templates/rsyncd.conf.proto.j2 b/roles/dbscripts/templates/rsyncd.conf.proto.j2
index 780f95315a9faffb815bc23af145066ac3057131..e9a9711198d0b69fe4c8429d228d47a9b2057375 100644
--- a/roles/dbscripts/templates/rsyncd.conf.proto.j2
+++ b/roles/dbscripts/templates/rsyncd.conf.proto.j2
@@ -105,18 +105,14 @@ hosts deny = *
 	path = /srv/ftp/core
 	comment = core repository
 
+[core-testing]
+	path = /srv/ftp/core-testing
+	comment = core-testing repository
+
 [extra]
 	path = /srv/ftp/extra
 	comment = extra repository
 
-[community]
-	path = /srv/ftp/community
-	comment = community repository
-
-[testing]
-	path = /srv/ftp/testing
-	comment = testing repository
-
-[community-testing]
-	path = /srv/ftp/community-testing
-	comment = community-testing repository
+[extra-testing]
+	path = /srv/ftp/extra-testing
+	comment = extra-testing repository