brent timothy saner via plug on 17 Dec 2020 22:53:38 -0800


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] git server


On 12/17/20 23:24, Peter Cramer via plug wrote:
> A friend and I are working on a small project together.  (There likely will be more projects in the future.)   Originally we planned to create a repository on GitHub, but the truth is neither of us is all that thrilled with GitHub now that it has been bought out by Microsoft.    
> 
> We are considering setting up our own git server on an Ubuntu machine that we have access to.   Does anyone have any experience in this area?   Is it crazy difficult?   Any thoughts / advice?

You have a couple options:

# vanilla #
https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
Git has its own server component built-in.

PROS:
- No large amount of dependencies
- Piggybacks off a standard service (SSH)
- Probably requires the least amount of configuration

CONS:
- VERY barebones in features (best learn how to merge like the kernel
devs do[0] if you plan on accepting external commits!)
- No web UI (or SSH "UI"/CLI, really, aside from your pure git
operations), just a web browser[1]
- No ACL/permissions/roles/etc.
- No "server-side hooks" so automation options are pretty limited


# gitolite #
https://gitolite.com/gitolite/index.html
My personal favourite. Very barebones but still has a lot of extra
security features that make it superior to the vanilla git server.

PROS:
- Robust ACL/permissions system
- Fairly easy to set up
- Good server-side hook support
- Minimal SSH CLI

CONS:
- No web UI[1]
- Configuration is done through a configuration file in an "internal"
git repository, as well as all users/keys/groups/etc.


# gitea #
https://gitea.io/en-us/
Takes a little bit of reading to get going, but once you're there it
should be the most comfortable. This is probably your best option for
your particular application.

PROS:
- Web UI (that greatly resembles GitHub's layout right before Microsoft
bought them)
- Fairly decent permissions system, plus "organizations" (you can use
them as sort of "meta projects"), teams within those organizations, etc.

CONS:
- It is a pain to get running behind Nginx (but it should be for better
logging and cert management)


# gogs #
https://gogs.io/
Don't even bother. Gitea was, if I recall correctly, a fork of gogs but
it's terrible. Just take my word for it.


# Gitlab #
https://about.gitlab.com/install/?test=capabilities
Gitlab is going to get you the most developer-friendly interface and has
the best feature parity with current GitHub.

PROS:
- See above

CONS:
- It is ...NOT for the faint of heart to set up
- It is an ABSOLUTE resource hog on some operations, so you'll need a
beefy box if you use it.


[0] https://www.kernel.org/doc/Documentation/process/submitting-patches.rst

[1] Git itself has a built-in webserver component:
    https://git-scm.com/book/en/v2/Git-on-the-Server-GitWeb
    But you may find that you prefer cgit:
    https://git.zx2c4.com/cgit/about/
___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug