ENIGMA Forums

General fluff => General ENIGMA => Topic started by: RetroX on January 01, 2012, 04:47:29 pm

Title: Use git instead of SVN.
Post by: RetroX on January 01, 2012, 04:47:29 pm
Because it's better.
Title: Re: Use git instead of SVN.
Post by: luiscubal on January 01, 2012, 04:56:43 pm
Do you really care?
I mean, will you take advantage of forking, etc.? Are you planning to switch to github? Something like that?
Title: Re: Use git instead of SVN.
Post by: polygone on January 01, 2012, 05:41:21 pm
github sucks balls
Title: Re: Use git instead of SVN.
Post by: RetroX on January 01, 2012, 05:42:29 pm
Do you really care?
I mean, will you take advantage of forking, etc.? Are you planning to switch to github? Something like that?
No, I'm saying that it would be easier to manage if it were turned into a git repostory.

SVN is terrible to work with.

And yes, forking would enable regular users to contribute changes and test them and then offer them back to the dev team.
Title: Re: Use git instead of SVN.
Post by: Rusky on January 02, 2012, 09:05:06 am
Git will solve actual problems that have already been encountered several times.

For example, as RetroX described, users without commit privileges will be able to work on potential contributions without abandoning version control. Projects like JoshEdit support could be put in a separate branch without killing Ism's working directory (git stash would be helpful here as well). Updates would be much faster and repositories (somewhat ironically) smaller, or at last comparable in size. For Linux developers, the version control tool itself would also be much faster.

Also, if ENIGMA further switched to GitHub, the web interface for viewing changes and files would be improved by about a factor of infinity.
Title: Re: Use git instead of SVN.
Post by: Josh @ Dreamland on January 02, 2012, 11:09:53 am
I thought I replied to this thread.

Switching would bring serious benefit to the tagging system; it takes too fucking long and consistently fails trying to mark the trunk as stable or testing. So huge benefit to be gained.

Difficulty is, everything is already set up in LGM to use SVN for downloading updates, via SVNkit. JGit (http://www.jgit.org/) seems to be what we'd look to for its replacement.

Also, the Wiki install pages all give SVN checkout instructions; those would either need to be replaced or supplemented (in case we want to keep the SVN version current) with the git how-tos.

If either of you are volunteering, I'll be happy to make the switch. I don't speak for Ism.
Title: Re: Use git instead of SVN.
Post by: RetroX on January 02, 2012, 12:24:07 pm
I'd be willing to do it.  Or help out, at least.

I can set up a repo here (https://github.com/enigma-dev) if someone gives me the permissions.
Title: Re: Use git instead of SVN.
Post by: IsmAvatar on January 03, 2012, 04:37:32 pm
When I get the chance, I'll start porting the updater to JGit (and/or browse for alternatives to JGit). It's completely self-contained, as can be seen by the method of turning it off (just delete svnkit.jar).

If you guys want to go ahead and start porting ENIGMA's SVN to GIT, whatever that entails, be my guest. It'll make my job easier because then I'll have a working repository to test against.

Unfortunately, while I have a ton of experience with SVN, I only have a tiny bit of experience with GIT, so either I'm going to have to do some learning, or someone else is going to have to be our resident repository expert.
Title: Re: Use git instead of SVN.
Post by: RetroX on January 03, 2012, 09:42:25 pm
Unfortunately, while I have a ton of experience with SVN, I only have a tiny bit of experience with GIT, so either I'm going to have to do some learning, or someone else is going to have to be our resident repository expert.
I know loads about git, so, I can tell you want if/when needed. When you're developing on Linux, I recommend looking into gitg; it's an extremely useful commit history visualiser (particularly with branches) and supports mediocre staging/committing.

Essentially, Git works off of unstaged, staged, stashed, and committed changes:


Git operates based off of changes and merges a lot better than SVN does.  If you modify the first half of a file in one branch, then the second half in another, git can merge both changes without a problem.  It's only where these changes intersect that it causes problems (such as two branches changing the same line).

There are loads of things that you can actually do with it, but I'll explain them as they're needed rather than all at once.  Plus, you probably know a lot of it.
Title: Re: Use git instead of SVN.
Post by: IsmAvatar on January 04, 2012, 03:36:48 pm
SVN's branches are just total copies of one folder to another. This takes up very little space, since it can just say "this is the same as folder X at revision Y". It does actually have the full history behind each file, due to this linking nature. The branch does, however, get out of date if you don't merge the trunk with it, which means you should either regularly merge, or merge before reintegrating.

SVN has actually gotten a lot smarter at merging files, too. Usually you can merge a file with changes on both ends without issue, provided you didn't modify the same line. Every now and then it does get fussy over something silly, though.


Just to clarify what SVN does. I, of course, see loads of benefits to using GIT over SVN, provided I can figure out how to work it.