- internal, small company (<10 "devs" of any kind) development source control
- as lightweight as possible (but no lighter)
- support for "common" git clients (vscode, cli, atom, etc)
If it matters, most of the development work that will be going on is related to config file management, xml documents, scripts, etc - for the foreseeable future, we have no need for integrations into automated build systems
With those needs/conditions in mind, would you pick Gitea, Gitlab, or something else ... and why?
Obviously both are Git hosting platforms so I'm not sure what more we can do for you.
Consider looking at the financial cost of support for both. As a company your time fixing problems is what I think is the most important consideration. Initial setup time is a small price compared to lifelong maintenance.
For Gitea I never had any problems I didn't create myself. But aren't all problems like that. And I didn't have a very complicated set up.
GitLab is good for teams or when you want to play with a fully featured CI/CD and have a solid Issue/ MR System. It however is also quite a hassle to maintain sometimes though the omnibus installations have gone a long way. Also be prepared to spare some RAM.
Gitea on the other hand is light and comes with some QoL things like non-paywalled Repository mirroring and compatibility with GitHubs CI. It's also a bit snappier and very easy to run. The ressource usage also reflects this both from disk space and RAM.
It's kinda like comparing vscode to a full blown IDE.
Not in the same league. But might be adequate for OP.
Just makes sure you _really need_ to host your own git repo and it's not some sort of overzealous security/compliance measure. If you don't trust github, gitlab, maybe sourcehut (https://sr.ht - no affiliation) is a good fit?
If you do setup an internal repo, makes sure you setup mirrors and/or remote backups and a documented and tested disaster recovery scenario.
ps. if you don't need a web interface, a UNIX server running SSH is just fine. Server side:
$ mkdir -p Projects/myeliteproject.git && cd
Projects/myeliteproject.git
$ git init --bare
$ exit
On the dev machine: $ mkdir -p Projects/myeliteproject.git && cd Projects/myeliteproject.git
$ git init
$ git remote add origin ssh://[user]@[hostname]/full/path/to/the/repo.git
$ git push origin master
$ echo "We need this commit in order to avoid errors" > first_commit.txt
$ git add first_commit.txt
$ git commit
(write a reason here... "first needed commit" is a good one)
$ git push
$ git config branch.master.merge 'refs/heads/master'
$ git config branch.master.remote origin
$ git config --global push.default current
(This config is to avoid warning messages. Please read here and consult documentation for refspecs)
$ git pull
Already up-to-date.
And if you need a web interface: https://git-scm.com/book/en/v2/Git-on-the-Server-GitWeb :-)
Now I don't think this is a good idea, but since you specifically said as lightweight as possible I just wanted to mention it-
Running just git on an ssh accesible user is absolutely the most lightweight possible solution. You just need git and ssh, that's it. It's compatible with every normal git client, and does all the normal git stuff. This is how I manage my smaller personal projects (running on a raspberry pi), and it works fine for a single person.
There's no CI/CD. No Pull Requests, no web GUI, none of the niceties of any of the options mentioned here.
However if it's really very lightly used, and by technically inclined people, it may be an option.
e: I stand corrected, there is apparently a web UI!