Something for the GIT-haters

I know there’s a bunch of git-moaners who use juce, so I’ve added an experimental new feature in the (experimental) jucer that will automatically download the latest version of the library for you. It’s just a menu option that lets you check what version is available, and install it, no GIT knowledge required…

Opinions and suggestions for this welcome!

Just wondering what have you gained when moving from svn to git ?


I’ve spent a lot less time screaming angrily at corrupted SVN repositories and trying to manually repair them so I could check in my work without losing it. I’ve spent a lot less time waiting for remote access when looking at file histories, and comparing old revisions. I’ve been able to rename and move files without worrying that everything will get broken, confused or duplicated. I can make copies of my repository that work without a remote connection, etc etc. It’s better in so many ways that I just don’t understand why people moan about it!

oki doki.

Well I guess it’s because svn is simpler if you only want to retrieve the latest version and easy daily function when you only have read access.

“git clone --depth 1” gets only the latest version. Ok, you do have to ask for it specifically, but it’s still pretty easy.

It’s not Git that’s complex.
It’s the decentralized vs centralized that’s very complex for people only “downloading” source code.

I’m using Bazaar and Hg on different project and they are much more complex than SVN, and slower than Git.
What’s complex in few lines:

  • Understanding all the stuff about branches (the checkout command in SVN is definitively not the same as in Git or any other decentralized software)
  • The “unusual” merge strategy (you don’t have the SVN’s default: “use their version on conflict”) in Git with all the git reset / git rebase continue stuff.
  • Git status isn’t very clear (unlike SVN, a git status never tells you where files are in time/branch space)
  • Specific to juce, the end of line in Juce repository aren’t configured correctly (they have CR+LF even under linux), so you must deal with internal gitconfig hacking on Windows (disable auto crlf so your lines don’t end in CR CR LF) which is not as easy as using TortoiseSVN.

Once you start dealing with git every day with your own projects, the things become clearer every day.
Sadly, it’s not the case for people only downloading Juce source code, when they get strange messages after modifying the juce_config file and amalgamated files (like the branch issue, never ever work in master daily, etc…)

potentially silly question, but… is this feature by any chance in the current zip? in other words, do i have to use git manually first in order to get it so i don’t have to use git manually? Also, does this feature still require the manual setup of the crlf gubbins so it doesn’t bork?

Yes, it’s currently a bit silly in the sense that you would need to git it first, and build it before you can use it! When the jucer’s more stable I’ll be providing a binary release of it, so it’ll be able to bootstrap itself that way, I’ve just not got to that point yet.

I think I need to get something straight, before I get GIT set up again on my newly-installed PC.

I remember the pain when I tried to “get latest” in the past, because git would bugger up the files. The solution was to amend the git config file (i believe setting the auto-crlf to false). However, installing GIT shows me this page:

… aassuming I’m remembering the option I had to set before, that puts it in the third mode [which it says not recommended for cross-platform]. So, this leads me to think that the Juce repository is configured inappropriately. Am I just misinterpreting things here? If I’ve seen that message before, that’ll explain why I’ve always had this problem [because option 1 is the OBVIOUS choice]. I don’t remember seeing it (or even understanding why the **** git would need me to make such stupid manual config steps to get it to work properly), but seeing it now - well, it seems like it’s making some sense. In that, something might be better changed at the other end.

Of course, I could be remembering everything wrong. Still, I’m leaving my GIT installer at that screen til I get some feedback on which option I should actually choose :slight_smile: I don’t want to have to go through any of that again.