2 from setuptools
import setup
, find_packages
5 def _subdir_contents(path
):
6 for toplevel
in os
.listdir(path
):
7 toplevel_path
= os
.path
.join(path
, toplevel
)
8 if not os
.path
.isdir(toplevel_path
):
10 for dirpath
, dirnames
, filenames
in os
.walk(toplevel_path
):
11 for filename
in filenames
:
12 full_path
= os
.path
.join(dirpath
, filename
)
13 if not full_path
.startswith(path
+'/'):
15 yield full_path
[len(path
)+1:]
16 def subdir_contents(path
):
17 return list(_subdir_contents(path
))
22 packages
= find_packages(),
24 author
= "Tommi Virtanen",
25 author_email
= "tv@eagain.net",
26 description
= "software for hosting git repositories",
27 long_description
= """
29 Manage git repositories, provide access to them over SSH, with tight
30 access control and not needing shell accounts.
32 gitosis aims to make hosting git repos easier and safer. It manages
33 multiple repositories under one user account, using SSH keys to
34 identify users. End users do not need shell accounts on the server,
35 they will talk to one shared account that will not let them run
40 keywords
= "git scm version-control ssh",
41 url
= "http://eagain.net/software/gitosis/",
45 'gitosis-serve = gitosis.serve:Main.run',
46 'gitosis-run-hook = gitosis.run_hook:Main.run',
47 'gitosis-init = gitosis.init:Main.run',
52 # this seems to be the only way to convince setuptools
53 # to include things recursively
54 'gitosis.templates': subdir_contents('gitosis/templates'),
57 # templates need to be a real directory, for git init
61 # setuptools 0.6a9 will have a non-executeable post-update
62 # hook, this will make gitosis-admin settings not update
63 # (fixed in 0.6c5, maybe earlier)