Running your own internal git server can have several advantages. Mainly, you are not sharing your code (IP) with external parties. There are many frontends you can strap onto a git server too, like Gitlab, Gitweb, Gerrit, and cgit [1, 2, 3, 4]. We use git/gitolite/gitweb heavily with our internal puppet infrastruture. You can have pre/post commit hooks for things like, syntax checking, email notification, and code deployments.
Here is the workflow:
+--------+ +---------+
| gitweb | |dashboard|
staff +--------+ +---------+ nodes
+-+ | | +-+
+-+-\ | | > +-+
\ +--+-----+ +------+-/
| |git | |puppet|
+-+ -->| |gito-| +-> |master| -> +-+
+-+ | | lite| | | +-+
/ +--+-----+ +------+-
/ | | \
+-+- | v > +-+
+-+ | email hook to +-+
| staff if production branch
v
syntax hook
I created a screencast about running an internal git server with gitolite @ http://sysadmincasts.com/episodes/11-internal-git-server-wit...[2] https://git.wiki.kernel.org/index.php/Gitweb