Date: Fri, 26 Jun 2009 23:30:50 -0700 (PDT) From: Douglas William Thrift <douglas@douglasthrift.net> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/136083: New port: devel/py-gitosis Software for hosting git repositories Message-ID: <200906270630.n5R6Uo2k070815@slowhand.douglasthrift.net> Resent-Message-ID: <200906270700.n5R706QW045016@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 136083 >Category: ports >Synopsis: New port: devel/py-gitosis Software for hosting git repositories >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Jun 27 07:00:06 UTC 2009 >Closed-Date: >Last-Modified: >Originator: Douglas William Thrift >Release: FreeBSD 7.1-RELEASE-p3-jc1 amd64 >Organization: >Environment: System: FreeBSD slowhand.douglasthrift.net 7.1-RELEASE-p3-jc1 FreeBSD 7.1-RELEASE-p3-jc1 #0: Fri Feb 20 15:10:57 PST 2009 user@jail2.johncompanies.com:/usr/obj/usr/src/sys/jail2 amd64 >Description: Manage git repositories, provide access to them over SSH, with tight access control and not needing shell accounts. Gitosis aims to make hosting git repos easier and safer. It manages multiple repositories under one user account, using SSH keys to identify users. End users do not need shell accounts on the server, they will talk to one shared account that will not let them run arbitrary commands. >How-To-Repeat: >Fix: --- py-gitosis.shar begins here --- #!/bin/sh # This is a shell archive echo x py-gitosis mkdir -p py-gitosis > /dev/null 2>&1 echo x py-gitosis/files mkdir -p py-gitosis/files > /dev/null 2>&1 echo x py-gitosis/Makefile sed 's/^X//' > py-gitosis/Makefile << 'SHAR_END' X# New ports collection makefile for: gitosis X# Date created: 25 June 2009 X# Whom: Douglas Thrift X# X# $FreeBSD$ X# X XPORTNAME= gitosis XPORTVERSION= 0.2.20080825 XCATEGORIES= devel XMASTER_SITES= http://cloud.github.com/downloads/douglaswth/gitosis/ \ X http://code.douglasthrift.net/files/gitosis/ XPKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} X XMAINTAINER= douglas@douglasthrift.net XCOMMENT= Software for hosting git repositories X XRUN_DEPENDS= git:${PORTSDIR}/devel/git X XUSE_BZIP2= yes XUSE_PYTHON= yes XUSE_PYDISTUTILS= easy_install X XSUB_FILES= pkg-message X XWRKSRC= ${WRKDIR}/${PORTNAME} XPYDISTUTILS_PKGVERSION= ${PORTVERSION:R} X Xpre-su-install: X @${SETENV} PKG_PREFIX=${PREFIX} GITUSER=${GITUSER} \ X GITGROUP=${GITGROUP} GITHOME=${GITHOME} \ X ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL X Xpost-install: X ${CHMOD} +x ${PYTHON_SITELIBDIR}/${PYEASYINSTALL_EGG}/gitosis/templates/admin/hooks/post-update X @${CAT} ${PKGMESSAGE} X X.include <bsd.port.mk> SHAR_END echo x py-gitosis/distinfo sed 's/^X//' > py-gitosis/distinfo << 'SHAR_END' XMD5 (gitosis-0.2.20080825.tar.bz2) = 64bc4d335fc47153c2a8a1a4eb635afa XSHA256 (gitosis-0.2.20080825.tar.bz2) = 3414f8f233793a780a4b121d323ef088e6ba0029c377e9c3fb04194c66d21d0e XSIZE (gitosis-0.2.20080825.tar.bz2) = 148973 SHAR_END echo x py-gitosis/pkg-descr sed 's/^X//' > py-gitosis/pkg-descr << 'SHAR_END' XManage git repositories, provide access to them over SSH, with tight Xaccess control and not needing shell accounts. X XGitosis aims to make hosting git repos easier and safer. It manages Xmultiple repositories under one user account, using SSH keys to Xidentify users. End users do not need shell accounts on the server, Xthey will talk to one shared account that will not let them run Xarbitrary commands. X XWWW: http://eagain.net/gitweb/?p=gitosis.git SHAR_END echo x py-gitosis/pkg-plist sed 's/^X//' > py-gitosis/pkg-plist << 'SHAR_END' X@comment $FreeBSD$ Xbin/gitosis-init Xbin/gitosis-run-hook Xbin/gitosis-serve X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/EGG-INFO/PKG-INFO X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/EGG-INFO/SOURCES.txt X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/EGG-INFO/dependency_links.txt X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/EGG-INFO/entry_points.txt X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/EGG-INFO/not-zip-safe X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/EGG-INFO/requires.txt X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/EGG-INFO/top_level.txt X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/__init__.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/__init__.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/__init__.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/access.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/access.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/access.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/app.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/app.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/app.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/gitdaemon.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/gitdaemon.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/gitdaemon.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/gitweb.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/gitweb.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/gitweb.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/group.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/group.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/group.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/init.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/init.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/init.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/repository.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/repository.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/repository.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/run_hook.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/run_hook.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/run_hook.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/serve.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/serve.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/serve.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/ssh.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/ssh.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/ssh.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates/__init__.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates/__init__.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates/__init__.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates/admin/hooks/post-update X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/__init__.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/__init__.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/__init__.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_access.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_access.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_access.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_gitdaemon.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_gitdaemon.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_gitdaemon.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_gitweb.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_gitweb.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_gitweb.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_group.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_group.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_group.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_init.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_init.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_init.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_repository.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_repository.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_repository.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_run_hook.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_run_hook.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_run_hook.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_serve.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_serve.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_serve.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_ssh.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_ssh.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/test_ssh.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/util.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/util.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test/util.pyo X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/util.py X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/util.pyc X%%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/util.pyo X@dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/EGG-INFO X@dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test X@dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates/admin/hooks X@dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates/admin X@dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates X@dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis X@dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%% SHAR_END echo x py-gitosis/pkg-install sed 's/^X//' > py-gitosis/pkg-install << 'SHAR_END' X#!/bin/sh X X# $FreeBSD$ X XPATH=/bin:/usr/bin:/usr/sbin X Xcase $2 in XPRE-INSTALL) X GITUSER=${GITUSER:-git} X GITGROUP=${GITGROUP:-git} X GITHOME=${GITHOME:-${PKG_PREFIX}/${GITUSER}} X UID=211 X GID=211 X X if pw group show "${GITGROUP}" 2>/dev/null; then X echo "You already have a group \"${GITGROUP}\", so I will use it." X else X if pw groupadd ${GITGROUP} -g ${GID}; then X echo "Added group \"${GITGROUP}\"." X else X echo "Adding group \"${GITGROUP}\" failed..." X exit 1 X fi X fi X X if pw user show "${GITUSER}" 2>/dev/null; then X echo "You already have a user \"${GITUSER}\", so I will use it." X else X if pw useradd ${GITUSER} -u ${UID} -g ${GITGROUP} -h - -d ${GITHOME} \ X -c "gitosis user" X then X echo "Added user \"${GITUSER}\"." X else X echo "Adding user \"${GITUSER}\" failed..." X exit 1 X fi X fi X X if ! [ -x ~${GITUSER} ] ; then X install -m 755 -o ${GITUSER} -g ${GITGROUP} -d ${GITHOME} X fi X ;; Xesac SHAR_END echo x py-gitosis/files/pkg-message.in sed 's/^X//' > py-gitosis/files/pkg-message.in << 'SHAR_END' X================================================================================ X XFor more information, see http://eagain.net/gitweb/?p=gitosis.git. X X================================================================================ SHAR_END exit --- py-gitosis.shar ends here --- --- ids.patch begins here --- diff -ruN /usr/ports/GIDs ports/GIDs --- /usr/ports/GIDs 2009-06-19 10:16:01.000000000 -0700 +++ ports/GIDs 2009-06-26 23:05:07.000000000 -0700 @@ -80,6 +80,7 @@ cups:*:193: sympa:*:200: dspam:*:202: +git:*:211: bs:*:220: postgrey:*:225: aprsd:*:240: diff -ruN /usr/ports/UIDs ports/UIDs --- /usr/ports/UIDs 2009-06-19 10:16:01.000000000 -0700 +++ ports/UIDs 2009-06-26 23:06:32.000000000 -0700 @@ -90,6 +90,7 @@ privoxy:*:201:201::0:0:Privoxy proxy user:/nonexistent:/usr/sbin/nologin dspam:*:202:202::0:0:Dspam:/nonexistent:/usr/sbin/nologin shoutcast:*:210:210::0:0:Shoutcast sandbox:/nonexistent:/bin/sh +git:*:211:211:gitosis user:/usr/local/git:/bin/sh bs:*:220:220::0:0:Big Sister:/usr/local/bigsister:/bin/sh postgrey:*:225:225::0:0:Postgrey Owner:/nonexistent:/usr/sbin/nologin aprsd:*:240:240::0:0:aprsd:/nonexistent:/bin/sh --- ids.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906270630.n5R6Uo2k070815>