This is a draft of how I set up the private side of the dgit server and client 
for raspbian. It may be incomplete. I have still to document the setup for the 
public side of the dgit server.

I have acheived a succesful push of a patched xen package with this 
configuration.

(replace raspbian and raspbian-related urls in these instructions with the name 
and urls of your distro)

server push setup

add a user dgit

create /home/dgit/ssh-wrap with the following contents

#!/bin/sh
set -e
umask 002

srvdir=/home/dgit
dispatchdir=$srvdir/dispatch-dir
#dgitlive=$srvdir/dgit-live

PERLLIB="$dgitlive${PERLLIB+:}${PERLLIB}" \
#exec $dgitlive/infra/dgit-ssh-dispatch $dispatchdir
exec dgit-ssh-dispatch $dispatchdir

create /home/dgit/dispatch-dir/distro=raspbian
in that directory put
a subdirectory called repos with a subdirectory called _template containing a 
bare git repo all owned by user dgit
a file called keyring.gpg containing the gpg keys with access to push to the 
repo
(you can import keys to the keyring with gpg --no-default-keyring --keyring 
dispatch-dir/distro\=raspbian/keyring.gpg  --import )
a file called policy-hook containing a copy of 
/usr/bin/dgit-repos-policy-trusting
a file called suites containing a list of allowed suites

in /home/dgit/.ssh/authorized-keys add lines like

command="/home/dgit/ssh-wrap" ssh-rsa <key> <comment>

The dgit server has a commit check, unfortunately I found that this commit 
check seems to be too strict (see
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=851716 ). There is supposedly 
a way to disable this through the policy hook but I couldn't make that work.

So as a temporary soloution I just commented out that block of code (it can be 
found in /usr/bin/dgit-repos-server and starts with if (!($policy & 
NOCOMMITCHECK)) { )

Client setup

#!/bin/sh
git config dgit-distro.raspbian.git-url https://dgit.raspbian.org/
git config dgit-distro.raspbian.git-url-suffix .git
git config dgit-distro.raspbian/push.git-url ""
git config dgit-distro.raspbian/push.git-host dgit.raspbian.org
git config dgit-distro.raspbian/push.git-user-force dgit
git config dgit-distro.raspbian/push.git-proto "git+ssh://"
git config dgit-distro.raspbian/push.git-path "/dgit/raspbian/repos"
git config dgit-distro.raspbian.git-check "true"
git config dgit-distro.raspbian.git-check-suffix "/info/refs"
git config dgit-distro.raspbian/push.git-check "ssh-cmd"
git config dgit-distro.raspbian/push.git-create "true"
git config dgit-distro.raspbian.upload-host raspbian
git config dgit-distro.raspbian.mirror http://archive.raspbian.org/raspbian
git config dgit-distro.raspbian.archive-query "aptget:"
git config dgit-suite.wheezy-staging.distro raspbian
git config dgit-suite.jessie-staging.distro raspbian
git config dgit-suite.stretch-staging.distro raspbian

Reply via email to