Thoughts on use git for Civ5 DLL mod sharring

Well I'd prefer to speak from a wealth of personal experience with git but because I lack that I'll go with the next best thing, a link with a slew of git propaganda specifically geared at comparing it with SVN. It says git will be both faster and use less memory to store the same data as its not creating a hidden duplicate of every file like SVN is.

https://git.wiki.kernel.org/index.php/GitSvnComparison
 
Spoiler Old Opinion :
Impaler[WrG];9085528 said:
Well I'd prefer to speak from a wealth of personal experience with git but because I lack that I'll go with the next best thing, a link with a slew of git propaganda specifically geared at comparing it with SVN. It says git will be both faster and use less memory to store the same data as its not creating a hidden duplicate of every file like SVN is.

https://git.wiki.kernel.org/index.php/GitSvnComparison

I actually read that myself after you posted this thread. The one thing that scared me was this:

With Subversion, you can check out just a subdirectory of a repository. Such a thing is not possible with Git. For a large project, this means that you always have to download the whole repository, even if you only need the current version of some sub-directory. In times where fast Internet connections are only available in most cities and traffic over mobile internet connections is expensive, git can cost much more time and money in rural areas or with mobile devices.

I only have a fast, reliable connection about 2/3 of the time. The other part of the time, I may have a much slower 1MiB/s connection that is flakey. My SVN is > 1GB, so basically, this will bring most of my modding to a halt during that 1/3 of the time.


I've since altered my views, and completely agree, Git is awesome.
 
I think you would be able to commit to your local git branch without inter-tubes access, you wouldn't be able to pull in other people branches but you should be able to safely commit and revert locally and do useful work.
 
Impaler[WrG];9085570 said:
I think you would be able to commit to your local git branch without inter-tubes access, you wouldn't be able to pull in other people branches but you should be able to safely commit and revert locally and do useful work.

Okay, I believe it said as much on the link. However, if I was to need to merge BBAI mod for example, wouldn't the merge be a PITA because I can't manually select certain subdirectories, and have to use the entire branch? Or do I misunderstand merging?
 
My understanding is that some kind of diff is generated and sent to you and can do conflict resolution just like in SVN. I don't understand what you mean by 'manually select certain subdirectories' if your merging in someone else branch then your going to want all their code. Perhaps your thinking of SVN in which there's a directory OF 'branches' in a project. If so then git doesn't work like that, branches are integrated into the system rather then being stored in directories, you access them by name.

From what I gather the steps are, checkout a copy of the branch you wish to merge in, perform the merger locally on your system with any conflict resolution or tweaks you need, commit the changes to your branch to the remote repository. After that you could simply delete the temporary branch or keep it updated and repeatedly merge in its changes.
 
Impaler[WrG];9081843 said:
Not sure what you mean here, SDK mods can indeed usually be combined without a problem but merging and diffing code between different SVN repositories is a pain, if you want someones mod they need to send you a diff or you need to check out their whole project and make it yourself. Git looks to be an easier solution to the code sharing hurdle. Also the ease of creating branches in git would encourage many small branches of limited scope and complexity.
That. ^

This is the very reason why this is an excellent idea. It's not about creating one dll to rule them all, or some centralized project, etc. It's all about making easy to combine the changes from different people: just pick what you want, then add your own features and magically keep everything in sync. You do not even need to ask for commit rights, you can commit locally.

For example I would like to modify the dll just to fix the civ5 bugs that plagued IGE. My dll would be only about bugfixes and optimizations. I would like to make possible for other modders to quickly add my code to their codebase, so that they can make IGE compatible with it and improve the civ5 experience, then keep things in sync. Git is the perfect solution for this.


Can someone please explain (I do really want to know) why git is better than what we have now?
Initially SVN was limited because of the data structures were lacking and that made merging branches very hard (it was nowhere stored that a merge was the result of a merge, so as your two branches evolved, it was difficult to keep them in sync). That was fixed later but it partially explains why distributed source version control systems (DSVCS) have such a good reputation and SVN such a bad one.

But let's forget the past and look at the present. Here are the differences that make Git good for what we're discussing :
* Git is decentralized: you get a snapshot of the online repository and create your own local repository where you can commit to. That repository still contains all the references to the online repository. So that means that any user, without any commit right, can commit locally, do his stuff, merge, branch, etc, all of that even being offline, then submit everything later. Work, complete, then commit/submit: it works better that way for decentralized and open-source projects. And potential contributors without any right can work first, ask later: a great incentive.
* The data structures are far more flexible (a graph instead of a tree): you *always* fork and implicitly create branches. Contrary to SVN, it's not about "first update to most recent version, then commit": instead, everyone is working on his own fork and end up what he's doing, then merge into any online version. You can also think about all commits being unversioned patches. It makes easy to merge patches together, keep them in sync, etc. Want to include a patch from July into a version from March, or the opposite? Or remove the changes from a patch from two months ago, locally or online, without removing the changes made after that? No problem. Internally, things are not ordered according to a stupid version, but according to how they were created. Tree versus graph.
 
Hey there, I just wanted to chime in in favor of Git and revive this thread a bit since the patch with dll source code is coming closer.

Disclaimer: I've actually never used pure git, I've used git-svn and git as a local tool to separate my work into small local changes before committing to a Perforce repo. So I know really well how git works as a local versioning tool with a central repo, but I've no experience of the decentralized aspect of it besides not having to connect to a server for everything.

Some things I really like about Git are (only mentioning things I've used heavily and found awesome, no buzzwords here) :

- It's real easy to make micro-commits that only contain changes that are related - makes reverting or reading history much easier down the line. You can even handpick the set of changes from a big file that you want to include in your commit. (I usually do this with git-gui.) I do it all the time to separate cosmetic changes out of my feature commits, so they're easier to read.

- You can freely reorder/merge/delete local commits that you haven't published for other people yet... it encourages you to commit more often since you don't need to make a new commit just to add the comment line you forgot, just amend the last commit. (This is done with git commit --amend for amending the last commit, or git rebase -i to work with n previous commits.)

- I almost never branch under svn, but I do it under git since I can just start one at any time locally, without uploading it to the server. Works wonders for testing alternate solutions to a problem, or just starting an embryo of code for an idea I wanna continue later.

- Browsing the history, switching branches and stuff like that is really fast since you don't need server access. (gitk or tortoisegit work great for browsing history)

- You can quickly stash your current changes to work on a separate project like a quick bugfix, and reapply them later to your source. (git stash push, git stash pop)

- Git is amazing at compressing stuff, it often manages to compress the whole history of a project down to not much more than the checkout of the latest version takes.

Overall Git is more complicated and I've had some scares with it when making mistakes in my manipulations, but unlike svn which sometimes seriously messed up my repo, I don't remember a time where I couldn't find a way to recover from my mistakes.
 
Bumping this now that the source code is out. I have absolutely no idea on how to use / set up Git, but I understand the benefits as described here :D

Moderator Action: And thread moved to the C&C section
 
Bumping this now that the source code is out. I have absolutely no idea on how to use / set up Git, but I understand the benefits as described here :D

Moderator Action: And thread moved to the C&C section
Funny thing is that I have as since completely reversed my opinion and am a Git fanatic.
 
So, anyone willing to manage this ?

Or is it simple enough to set up that anyone (even me) could do it ? :)
 
So, anyone willing to manage this ?

Or is it simple enough to set up that anyone (even me) could do it ? :)

I'm of the opinion that the source code was too little too late. I don't see any big projects starting for Civ5, and pretty much all the respected Civ4 modders have either left, or are not moving up to Civ5. I would have written SDK mods back in 2010. I am no longer interested. I know for a fact that Impaler left months ago to start writing his own game.
 
So, anyone willing to manage this ?

Or is it simple enough to set up that anyone (even me) could do it ? :)
I am not involved anymore with civ5 for now so I will not do it. It is very simple to do (no SSH terminal, etc, a pure UI job). You need to get used to git after that but it's not such a big deal. However it needs to be done by someone who can animate the community:
* Make people understand that the git repo is not only for main branch stuff like additional events, bugs fixes, more players, etc, but also for the ones who want to fork from it for their custom needs while still benefiting from the existing codebase and future changes.
* Managing permissions, answering questions, etc.
* Review patches for the main branch.
* Advertise the work being done and the fact that anyone can help.
* Maybe write a little tutorial to get started with git.

If you're willing to, you are likely to be the best person for that but it amounts to some work.
 
I'd prefer to have someone experimented with Git, but Afforess is right on one point: there are not many modders working on civ5 ATM, so no urgency, let's wait 1-2 weeks to see if the source code release brings some animation here before.

And during that time I can play locally with Git, I'll take the task then if no one has volunteered...
 
I'm of the opinion that the source code was too little too late. I don't see any big projects starting for Civ5, and pretty much all the respected Civ4 modders have either left, or are not moving up to Civ5. I would have written SDK mods back in 2010. I am no longer interested. I know for a fact that Impaler left months ago to start writing his own game.

This is definitely one of the most depressing posts I've ever seen on these forums.
 
This is definitely one of the most depressing posts I've ever seen on these forums.

Ditto on how you feel. I have mentioned this time and time again.

Thus it is up to us who remain behind to pick up the mantle and run with it! :eek2:
 
This is definitely an excellent idea. Pull from a common DLL, add the components that you need, collaborate with your development team via GitHub, and then commit to the common DLL what others might want.

Simply beautiful.
 
I'm of the opinion that the source code was too little too late. I don't see any big projects starting for Civ5, and pretty much all the respected Civ4 modders have either left, or are not moving up to Civ5. I would have written SDK mods back in 2010. I am no longer interested. I know for a fact that Impaler left months ago to start writing his own game.

Keep in mind that quite a few of the people who modded the DLL for civ 4 had no or very little experience with c++/programming before they started modding civ 4. There will be new modders for civ 5 that wasn't around for civ 4. Perhaps there won't be as many and perhaps many of the more talented programmers have disappeared but I'm sure we'll see DLL mods.
 
Just play caveman2cosmos, it sh1ts all over civ5 and has the best civ4 modders & professional c++ programmers still on the team still. It also includes all of afforess' excelent 'a new dawn' work too.

Its the combined work of years of modding and pooling of work, no civ 5 mod will come close to it imo. At least not for a few years.

Moderator Action: This post has nothing to do with this thread, and please don't violate our language rules.
 
Just play caveman2cosmos, it sh1ts all over civ5 and has the best civ4 modders & professional c++ programmers still on the team still. It also includes all of afforess' excelent 'a new dawn' work too.

Its the combined work of years of modding and pooling of work, no civ 5 mod will come close to it imo. At least not for a few years.

Civ 5's main problem with modding is a shortage of talent.

Yeah, I said it! Look at how much **** is either repackaged **** from Civ 4 or is just of absolute terrible quality. I could count on one hand the actually decent mods that have actual talent developing them. I won't drop any names, though.

Demand more from us! Start telling us when our mods look, feel, play, are coded, are scripted, or sound like ****. Just start expecting more from us. With a demand for talented individuals, a supply of such will follow soon thereafter.
 
Just stop whining please (meant in general).
There are people here who are doing great stuff.
There are people who can do graphics, who can code, and who can package a mod together. The people are there.
Do some work, then more will come.

...and to get back the original topic:
I have to agree with DonQuiche, but I also can't take that task. If anyone is willed to, then he/she'll get a digital cookie from me.
 
Back
Top Bottom