Experimental git repository

billw2015

King
Joined
Jun 22, 2015
Messages
837
This is something I made for myself, however based on interest from various people I have also documented it for consideration as an alternative to SVN for this project.

If you would like to know more, and perhaps try it for yourself check out this setup guide: https://github.com/billw2012/Caveman2Cosmos/wiki/Collaborator-Setup

Ask questions here, or in #dev-talk on discord (we just hit 100 members in discord, consider idling!).

If there is interest but people want better guides then Thunderbrd might be willing to make a video! I can as well obviously improve the guide based on feedback of what isn't clear.

If you are wondering why anyone would want to switch then I will just note a few of the reasons:
  • Github.com - this website pretty much revolutionized the open source community. Its the 50th most popular website in the world (alexa). What it means for this project is a combination of exposure and a lower barrier to entry for contribution. For most coders, when they see a project is on Github they think "Awesome, I can easily contribute something to that!" (someone in discord in fact said words to this effect).
  • Support - git being the most popular version control system in the world means the tooling is second to none. Many options, many integrations, lots of tutorials, loads of people know it and can give support.
  • Features - git has some features that can lead to easier and better development. The main ones as compared to SVN would be committing and branching locally. This means you can juggle multiple different in progress changes at the same time, you can try things out in your own local branch and commit it locally for using later.
  • Simplicity - if you want an SVN like workflow where you work only on a single shared branch that also works fine, you can just update, make changes, and commit.

I think the technical questions that were raised in the other thread where this was first mentioned are resolved, (if I missed one please reiterate it in this thread):
  • Git can't handle large files - the new configuration for the repository keeps all the FPKs at 100MB or smaller. All other files were already well below this size (the file size cap on github). The FPKs themselves should only be changing (and this producing new versions) very infrequently, as the art folder should be used for ongoing work between releases. IF the repository gets too big the history can be culled (I did this for the SVN import already) of large files.
  • Github costs money - as far as I can tell organizations are free for any number of owners or collaborators. alberts2 has one setup already, if this project were to move to git, I would transfer ownership from my personal account to that organization.
For an existence proof of this at least working you can see another large Civ 4 mod hosted here https://github.com/dguenms/Dawn-of-Civilization.
 
Last edited:
Github costs money - as far as I can tell organizations are free for any number of owners or collaborators. alberts2 has one setup already, if this project were to move to git, I would transfer ownership from my personal account to that organization.

I had to setup a new organization to be able to add other members it didn't work in the old one.
Instead of transferring your repo we could also fork it as experimental repo for modders to get used to git and github and decide later how to do things like art or compiled binaries in the real C2C repo.
 
Instead of transferring your repo we could also fork it as experimental repo for modders to get used to git and github and decide later how to do things like art or compiled binaries in the real C2C repo.
Yeah, although I might want to remake my repo now I learned a bit more about git-svn. Wish I had called the current one c2c-experiment!
 
Yeah, although I might want to remake my repo now I learned a bit more about git-svn. Wish I had called the current one c2c-experiment!
You did a little mess by not posting your changes to SVN changelog.
That is even if its only change in branch not affecting trunk it still counts as actual change.
Others have to edit their posts.
 
Not sure I understand this. People are manually copy pasting every change they do into a thread? I assumed it was automatic hook.

Why?
No, people have to manually copypaste their message logs to thread.
Just look at thread I linked to.
Did you never looked at this thread (and sourceforge SVN log, that I linked too)?

People are editing posts to include your SVN changes.

For example Thunderbrd never saw your commit, and what was 10778 he thought its 10777th commit.

All commits count, not just in trunk - that is committing to branch increases this number too.
 
Last edited:
I must be missing something then. I don't see where it says you have to post all changes, I don't see where it says branches should be posted. I certainly noticed that people post their changes there. Not sure why you would post changes in branches though, normally the branch merge commit will contain the branch changes in one set because that is the point when it will effect other people.
 
I must be missing something then. I don't see where it says you have to post all changes, I don't see where it says branches should be posted. I certainly noticed that people post their changes there. Not sure why you would post changes in branches though, normally the branch merge commit will contain the branch changes in one set because that is the point when it will effect other people.
You should post branch changes as to not make seemingly missing commit numbers in thread.
Use of branches is very new thing, so everyone will assume, that someone just forgot to post their changes or never committed anything.
You can see, that @Thunderbrd didn't notice anything, and he needs to edit post accordingly to correct number.
@Anq adds (branch only) after commit number if his commit changes branch and doesn't affect trunk.

If you click "show log" in working copy, then you can see, that branch commits aren't here.
By posting those in changelog thread you let people know, that branch commit happened so they can write down correct number, and that they can know why it isn't showing up in tortoise chnangelog.
 
Last edited:
Sorry I didn't read my introduction message close enough, so I missed this part! Can't say I understand the point of posting verbatim svn history to a thread, or why it isn't automated, or why people wouldn't just look at their commit to see the correct number, but I will do it anyway.
 
Sorry I didn't read my introduction message close enough, so I missed this part! Can't say I understand the point of posting verbatim svn history to a thread, or why it isn't automated, or why people wouldn't just look at their commit to see the correct number, but I will do it anyway.
It is posted on forums, so people who doesn't have SVN (or doesn't want to click "show log" every day) and doesn't want to go to source forge can have idea what is happening in SVN - it was since SVN was setup.
It isn't automated on forums, because bots are not allowed on civfanatics forum.
Also people didn't look at number, because they assume that everyone who commits on SVN instantly posts here on forum.
 
It's an informal contract between us and the public, and between modders too.

The public includes loads of people who are intimidated by complicated stuff like tortoise SVN, repositories and URL's and whatnot.
People who even though they don't use the SVN would like to know what we are up to between official releases.

Modders seems to like having a civfanatic thread that notify about SVN changes, it's faster to check than to use the tortoise "show log" feature, more convenient to check as we very often roam the C2C forum, and most of us almost never go to the sourceforge page for C2C to check commits there either.

Your fellow modders like to know a little about what you are up to in the branches, tortoise SVN "show log" doesn't provide this information so it's nice to have a centralized notification board that modders frequent where they can see what's what.
 
Last edited:
Yeah I definitely have no problem posting changes in principle, I understand other people including players want to see them. I don't like that it HAS to be a rote copy of every single change in every branch or it breaks though. When I'm working on a branch I just want to work, I don't want to worry about making a manual report for every check in I make. This may be different for you, but I will commit early and often when on a branch. Most of it won't be for player or other dev consumption (stupid stuff like fixing line endings, taking latest from trunk, stripping dead code, reverting a previous checkin etc.). When I merge back, THEN I would call out all the stuff that other people need to know about in an easily digestible format.

HOWEVER: given this system apparently will break if I don't do this I will just go with the flow and copy paste every commit. I'm sorry if I forget sometime, but this is the first time I have had to remember to do something like this and I've probably made hundreds of thousands of commits in my life, so it's like learning to drive on the other side of the road. I very much want to remember, but it is instinct to just commit and carry on working at this point.

FYI: I didn't try this (in work at the moment), but apparently you CAN see all branch changes in TortoiseSVN: https://stackoverflow.com/a/23222539/6402065
 
Well it doesn't have to be complete detail - just copy description of your changes like shown in sourceforge changelog.
Or copy what you wrote before committing to SVN branch.

So all changes you do to trunk or one of branches matter.
Dwm 2019-07-29 14-36-34-90.png


You can simply edit post as long as someone didn't post after you.
 
Last edited:
FYI: I didn't try this (in work at the moment), but apparently you CAN see all branch changes in TortoiseSVN: https://stackoverflow.com/a/23222539/6402065
Yeah, that works, though it takes 20-30 seconds before you then get the commit coments on screen.
Clicking the "C2C SVN Changelog" thread (which one know one don't need to do when the title of the thread is not bold) takes 1 second before the commit comments are on the screen.
I'm sorry if I forget sometime, but this is the first time I have had to remember to do something like this and I've probably made hundreds of thousands of commits in my life, so it's like learning to drive on the other side of the road. I very much want to remember, but it is instinct to just commit and carry on working at this point.
I get that sentiment, though the extra communication about what one is doing is generally worth the hassle for the team as a whole. Make it as easy as possible for all modders to always stay in the loop, you know.

When I make commits, I always copy the comment I wrote before clicking the commit button, then I paste it into the SVN changelog thread. It's not that much of a hassle when it becomes routine.
 
Last edited:
If you are wondering why anyone would want to switch then I will just note a few of the reasons:
  • Github.com - this website pretty much revolutionized the open source community. Its the 50th most popular website in the world (alexa). What it means for this project is a combination of exposure and a lower barrier to entry for contribution. For most coders, when they see a project is on Github they think "Awesome, I can easily contribute something to that!" (someone in discord in fact said words to this effect).
  • Support - git being the most popular version control system in the world means the tooling is second to none. Many options, many integrations, lots of tutorials, loads of people know it and can give support.
  • Features - git has some features that can lead to easier and better development. The main ones as compared to SVN would be committing and branching locally. This means you can juggle multiple different in progress changes at the same time, you can try things out in your own local branch and commit it locally for using later.
  • Simplicity - if you want an SVN like workflow where you work only on a single shared branch that also works fine, you can just update, make changes, and commit.
To me these boil down to "market share". It is both a persuasive and a terrible reason.

Persuasive for the first two reasons given (the last two are non-reasons, being things we are already doing).

Terrible because all market share corrupts, and leading market share corrupts "like a boss"... literally! What happens when the free option goes away (don't pretend it won't)?
 
Terrible because all market share corrupts, and leading market share corrupts "like a boss"... literally! What happens when the free option goes away (don't pretend it won't)?
Regardless of what we decide, we won't be leaving sourceforge/SVN, we can in principle do both at the same time by, in a way, linking the two repositories.

Just putting that out there in case you had a different impression from recent discussions.
 
To me these boil down to "market share".
Then you boiled them wrong. How does features boil down to market share? Git is functionally different and was made so from the start. It was designed to be better than what came before it, and I have never heard from a person who used it and svn who thought it wasn't.
the last two are non-reasons, being things we are already doing
No one is committing locally, SVN does not have that feature. Almost no one is branching because it is non trivial and also can't be done locally.
Terrible because all market share corrupts, and leading market share corrupts "like a boss"... literally! What happens when the free option goes away (don't pretend it won't)?
Truly a weird concern to have in this discussion. We should be concerned about keeping antiquated version control systems on poorly provisioned server farms running? And git and github are BOTH free (git was made originally by the same guy who made linux, it is as open source and free as software can get), as well as the many other free options. What reason is there to think any free option is going away? What about the sourceforge hosting, I believe it is free, is it going away?
Sourceforge even supports git, but I would never suggest to use it because both their servers and their frontend are worse than github.
 
:old: dogs and new tricks......always will have hesitation and trepidation....:help::badcomp::gripe::cry::help: Inertia vs the irresistible force....:ack:
 
Back
Top Bottom