@@ -2,32 +2,39 @@
===========
GIT support
Git support in RhodeCode 1.3 was enabled by default.
Git support in RhodeCode 1.3 was enabled by default. You need to have a git
client installed on the machine to make git fully work.
Although There are some limitations on git usage.
- No hooks are runned for git push/pull actions.
- logs in action journals don't have git operations
- hooks that are executed on pull/push are not *real* hooks, they are
just emulating the behavior, and are executed **BEFORE** action takes place.
- large pushes needs http server with chunked encoding support.
if you plan to use git you need to run RhodeCode with some
http server that supports chunked encoding which git http protocol uses,
i recommend using waitress_ or gunicorn_ (linux only) for `paste` wsgi app
replacement.
To use waitress simply change change the following in the .ini file::
To use, simply change change the following in the .ini file::
use = egg:Paste#http
To::
to::
use = egg:waitress#main
or::
use = egg:gunicorn#main
And comment out bellow options::
threadpool_workers =
threadpool_max_requests =
use_threadpool =
@@ -91,21 +91,26 @@ class GitRepository(BaseRepository):
_copts = ['-c', 'core.quotepath=false', ]
_str_cmd = False
if isinstance(cmd, basestring):
cmd = [cmd]
_str_cmd = True
gitenv = os.environ
gitenv['GIT_CONFIG_NOGLOBAL'] = '1'
cmd = ['GIT_CONFIG_NOGLOBAL=1', 'git'] + _copts + cmd
cmd = ['git'] + _copts + cmd
if _str_cmd:
cmd = ' '.join(cmd)
try:
opts = dict(
shell=isinstance(cmd, basestring),
stdout=PIPE,
stderr=PIPE)
stderr=PIPE,
env=gitenv,
)
if os.path.isdir(self.path):
opts['cwd'] = self.path
p = Popen(cmd, **opts)
except OSError, err:
raise RepositoryError("Couldn't run git command (%s).\n"
"Original error was:%s" % (cmd, err))
Status change: