ports/136083: New port: devel/py-gitosis Software for hosting git repositories

Douglas William Thrift douglas at douglasthrift.net
Sat Jun 27 07:00:07 UTC 2009


>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 at 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 at 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 at 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 at dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/EGG-INFO
X at dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/test
X at dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates/admin/hooks
X at dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates/admin
X at dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis/templates
X at dirrm %%PYTHON_SITELIBDIR%%/%%PYEASYINSTALL_EGG%%/gitosis
X at 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:



More information about the freebsd-ports-bugs mailing list