You could host it yourself. I run my own git-server using Bonobo Git Server, but there are lots of other self-hosting options. You can check out the wiki at r/selfhosted to see whats good for you
Assuming you have setup the git users and access figured out.
You have to initialize the git repositories on the server.
git init --bare <repo_name>
this will create your "origin" or server repository with this folder structure
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 5/13/2019 3:44 PM hooks
d----- 5/13/2019 3:44 PM info
d----- 5/13/2019 3:44 PM objects
d----- 5/13/2019 3:44 PM refs
-a---- 5/13/2019 3:44 PM 104 config
-a---- 5/13/2019 3:44 PM 73 description
-a---- 5/13/2019 3:44 PM 23 HEAD
​
After this, you can use the git clone command to clone the repo to your client machine.
git clone https://[IP OR DNS]/repopath.git # you can also use ssh path for cloning.
​
Note: You won't see your files in on the git server, they will be stored binary under objects and refs.
​
You should try GitHub server for Windows or Bonobo Git server for windows setups as the it is a little tricky with windows.
I would highly advise not using a system like SMB (windows file sharing), Dropbox, or anything like that. The problem is that networks are flaky and "dumb" file sharing systems (by which I mean file sharing that isn't aware of Git's semantics/expectations) could leave your repo in a bad state if the network drops at the wrong moment (obligatory xkcd). Instead, set up a service that is designed for sending Git over a network, for example, https://bonobogitserver.com/
Use a Git server like Bonobo and you can use the various GUI tools (like TortoiseGit, for example). It's not TFS like you want but you are not going to find any clients that interact with TFS other than the VS and Eclipse plug-ins and the command line tool.
I've come across Bonobo Git that runs on Windows in IIS. If that's no good GitLab is my next try. It looks quite nice, but as a mainly Windows shop I'd like to try and keep things in formats others are used to (and not have to do too much headdesk learning myself :)).
EDIT: Also, thanks for the tip about using web hooks for triggering things like Jenkins. I'll look in to that. My thoughts on this were to create another script that copied the repository across to a known location (probably Environmental Variable based) on all of the servers, then use a scheduled task to run it. Web hooks sound like a better (and more timely) idea.
Thanks to both of you.
GitLab looks interesting. I've come across Bonobo Git and it runs in IIS. I'm going to give that a go, and if I'm not happy with it GitLab is next to try.
After posting I've been having a look and a read.
I came across ProGet and a couple of blog posts (1, 2)about getting it up and running. It works well, but is only focused on modules, which isn't ideal.
As such I'm now going to have a look at running Bonobo Git on our "Management" (Windows) server. As we're mainly a Windows shop I'd like to try and keep to Windows if I can. If Bonobo doesn't work well, I'll probably try GitLab next.
As the "push it to all servers" bit seems to be where this all falls down a bit (from what I've found so far) I'm thinking that then I'll put together a script that will copy the "production" repository to each of the servers in a known location (maybe set from a custom Environmental Variable) that can be launched by a scheduled task every X hours.
With that said, I like scripting in PowerShell, and when you've got a hammer, everything looks like a nail. So, if anyone knows of a better way to "push" the production repo out I'm all ears.
How often do you need to commit large assets? If it's not that often, I'd just use an onling repo on Bitbucket if you need free and private with less than 5 contributers, or Github if you need free but lots of contributers, but open source.
If you really need to commit large assets often, I'd look at setting up GitLab or Phabricator on a local server (Or since you're on Windows, may Bonobo Git Server rather). You can use either of your workstations for the server, if you don't have a separate server available.
This way you always push and pull to and from your central repo. It's generally hassle free that way.