Diddy - Source Control Question... SVN or Hg?

Monkey Forums/Monkey Programming/Diddy - Source Control Question... SVN or Hg?

therevills(Posted 2012) [#1]
Diddy currently uses Subversion (SVN) as its source control system.

How many of you actually uses the SVN repository to check out the source code or do you just download the zip file?

We are asking as we are thinking about moving from SVN to Mercurial (Hg).

Would you have an issue if we moved to Hg?


jondecker76(Posted 2012) [#2]
I personally prefer SVN - though only because I'm very familiar with it. I've never used Hg, so I can't really comment on that. I would imagine that more people are familiar with SVN


ziggy(Posted 2012) [#3]
Mercurial here


impixi(Posted 2012) [#4]

How many of you actually uses the SVN repository to check out the source code or do you just download the zip file?



I don't use diddy, but if I did I'd just download the zip file. Same for any other project having such options. Personally I see SVN, Hg, etc more for active developers of that project rather than for third party users. Just my opinion.


Gerry Quinn(Posted 2012) [#5]
Like impixi, as a user I'd never comsider downloading anything but the zip.


Sub_Zero(Posted 2012) [#6]
zip here aswell


Jesse(Posted 2012) [#7]
and zip.


c.k.(Posted 2012) [#8]
i like what impixi said. use hg, if that's what the /developers/ prefer. if a user can't use it that way, he can download the [nightly|stable] zip.


Ferdi(Posted 2012) [#9]
I use this tool to download the latest version of Diddy or any SVN:

http://downloadsvn.codeplex.com/

Very handy tool if you don't want to install SVN.

If you switch to Hg, I probably look for one that can grab Hg. No big problem.

impixi is right, it is what the developers prefer.


Tibit(Posted 2012) [#10]
Anything but a zip-install for me! I prefer to be able to just click on Update/Pull and have the latest version directly into my modules folder in a second.

On HG vs SVN I don't care that much as a user, but I think HG will make life easier for the developers of diddy.


andrew_r(Posted 2012) [#11]
I'm currently happy with the svn, but I do have mercurial installed as well.
I love just being able to right-click on the diddy folder and say 'update' so as long as that doesn't change, I'm good :)


CGV(Posted 2012) [#12]
I installed TortoiseSVN just for Diddy so I'd personally be a bit miffed if you went and changed things now.

Although:
I love just being able to right-click on the diddy folder and say 'update' so as long as that doesn't change, I'm good :)
+1


Samah(Posted 2012) [#13]
Alright, after some discussion with therevills, we've come up with a compromise. From now on (for a trial period at least) our development will be on Bitbucket. Any default branch commits will be cloned to the Google Code SVN repository, so you Subversiony people will actually have a less bleeding-edge version. You'll get mainline bugfixes, but any bugs in work-in-progress development won't break your code. I'll link out the Bitbucket repository once we've got it set up.

We might periodically upload zip files to Google Code, but it's easy enough to grab a zip of the latest version from Bitbucket. You don't need Mercurial installed to do that:



Halfdan(Posted 2012) [#14]
I always checkout the repo, i think Hg is nicer for developers, but git is superior to both.

I cant access the bitbucket atm but maybe its not setup yet.


Samah(Posted 2012) [#15]
I cant access the bitbucket atm but maybe its not setup yet.

I still had it as private while therevills and I were getting it set up.

https://bitbucket.org/swoolcock/diddy

I'll get therevills to put it in his top post. Feel free to fork and submit pull requests. :)


Tibit(Posted 2012) [#16]
I love just being able to right-click on the diddy folder and say 'update' so as long as that doesn't change, I'm good :)


I agree! But now that is not so anymore?

It seems you have examples and the diddy module in the same repository, maybe I'm just not familiar enough with Mercurial, but should you not separate the two into two separate repositories?

So we can clone/checkout the module-only in the Monkey/module folder and (optionally) the one with examples somewhere else.

In SVN it is simple to checkout a sub-folder, but mercurial works on a project basis, not on a folder basis (unless I have have missed something). So right now if you change a example, you change the whole project - and the examples are not required to be able to use the diddy module, and so should they really be part of the project?


therevills(Posted 2012) [#17]
We are still going to use the SVN repository, so don't worry about using Hg if you dont want to.

With SVN each folder has a .svn folder which means you can check out per folder (as long as you have the .svn folder in the first place).

Hg has a top level folder called .hg, but only at the root.

I don't want to separate the examples away from the module as it makes me actually code examples, but I can see what you are saying.


Samah(Posted 2012) [#18]
So right now if you change a example, you change the whole project

What's wrong with this? Mercurial stores changesets as patches. It only does snapshots for large files or big changes (IIRC). A one line change to an example is not going to be a big download.

and the examples are not required to be able to use the diddy module

No, but the examples will be dependent on certain versions of Diddy.

I love just being able to right-click on the diddy folder and say 'update' so as long as that doesn't change, I'm good :)

If you configure TortoiseHg to move the "Synchronize" option out into the main menu, and you set post-pull to automatically update to the tip, it's three clicks rather than two. Instead of "right click, Update", it's "right click, Synchronize, Pull".


Amon(Posted 2012) [#19]
Late to the thread but I prefer svn. I check for updates 2-3 times a day and would really hate to see svn go.


Tibit(Posted 2012) [#20]
> No, but the examples will be dependent on certain versions of Diddy.
Good point

> We are still going to use the SVN repository, so don't worry about using Hg if you dont want to.
I'm still curious how do you guys put diddy into the modules folder when using mercurial then?

The reason I'm asking is that I'm in the same boat myself (for my own modules), and the way I solved it was to split them up in two projects since I found no other way around this.

I can always use SVN in this particular case with diddy, that is no problem. But since I'm facing the same problem myself every day (and I'm not using both, I'm only using Mercurial) I'd love to hear how you solve that problem?


Samah(Posted 2012) [#21]
I use the MODULE_PATH config variable in monkey-ext to point to my Diddy directory.
http://code.google.com/p/monkey-ext/


Tibit(Posted 2012) [#22]
Ah, obviously :)

monkey-ext is getting better each day, make me wounder why those additions are not official, anyhow I didn't find any installation instructions tough. If it was official I'm sure Ziggy and Ted would have it in the IDE. So useful to be able to optionally add modules like that.

Am I correct in that I only need to copy mojo to the modules dir? And for each new monkey release (once updated) click "SVN Update" and then move the new mojo (if changed) to the modules folder?


TheRedFox(Posted 2012) [#23]
svn checkout from me.

But my own code uses Hg. Currently finding myself using Fossil, which is great (includes Tracker and Wiki in a single executable)

Otherwise, git for GitHub/Bitbucket stuff for clients work.

As for modules maintenance, I do have the modules in a separate folder and manage them there.
A shell script copies all of that to a MonkeyPro folder (happens to be a symlink to the last version downloaded...)

Should also patch the targets for having my resolution of choice but well, that's still by hand.


Samah(Posted 2012) [#24]
Initial setup:
1) Install TortoiseHg
2) Make an empty directory somewhere for the repository. Call it whatever you like ("Diddy" is probably easiest).
3) Right click the background of the empty folder, and choose TortoiseHg > Clone
4) Source: https://bitbucket.org/swoolcock/diddy
Destination: The directory you're cloning to.
Click Clone, and it'll download the repository (it might take a while).
You now have the latest version of Diddy (yay!)
5) Right click the background again and choose TortoiseHg > Repository Settings
6) Choose Workbench option from the list on the left.
For "After Pull Operation", change it to "update".
Click OK.

From now on, when you want to get the latest version of Diddy:
1) Right click the background of the repository folder and choose TortoiseHg > Synchronize
2) Click the "pull" button. It should download all the recent changes to Diddy, and automatically update you to the latest version.


Note that with distributed version control like Hg and Git, you have the entire repository on your system. This means that you can see every change made to Diddy since day one, and you can easily revert to an older version if a bug is introduced. With a centralised repository like SVN/CVS, it's a lot more effort to revert to older versions (you need to have an internet connection available, and it will want to download a lot).


TheRedFox(Posted 2012) [#25]
OSX command line (assuming you have got macPorts) (go MacHg for the no-CLI thing)

sudo port install mercurial

But.. as there are issues with Lion
http://www.tobiasmuehlbauer.com/2011/07/06/mercurial-scm-hg-fix-for-os-x-10-7-lion/

After mkdir diddy_hg

PhilMac:MonkeyModules philippeback$ cd diddy_hg
PhilMac:diddy_hg philippeback$ hg clone https://bitbucket.org/swoolcock/diddywarning: bitbucket.org certificate with fingerprint 24:9c:45:8b:9c:aa:ba:55:4e:01:6d:58:ff:e4:28:7d:2a:14:ae:3b not verified (check hostfingerprints or web.cacerts config setting)
destination directory: diddy
requesting all changes
adding changesets
adding manifests
adding file changes
added 453 changesets with 1079 changes to 368 files (+1 heads)
updating to branch default
248 files updated, 0 files merged, 0 files removed, 0 files unresolved
PhilMac:diddy_hg philippeback$ ls
diddy
PhilMac:diddy_hg philippeback$ cd diddy
PhilMac:diddy philippeback$ ls
LICENSE.txt diddy.png examples src
data diddy128.png smalldiddy.png utils
PhilMac:diddy philippeback$

Good to go!


Samah(Posted 2012) [#26]
(go MacHg for the no-CLI thing)

Have you looked at SourceTree? Another Mac developer I know put me onto it. Admittedly I'm using it for Git, but it's a lot more polished than MacHg. I haven't tried it with Hg yet. It's on the App Store, but I was recommended to get it from their site for more frequent updates.
http://www.sourcetreeapp.com/


TheRedFox(Posted 2012) [#27]
No, frankly I do it all on the command line.
Thanks anyway, I'll have a look :-)


Samah(Posted 2012) [#28]
No, frankly I do it all on the command line.

Yeah I'd do it command line too, but for the wise words of Nyaruko-san:
"I could show you my true form, but you might lose some sanity points."


TheRedFox(Posted 2012) [#29]
Mmh, the fact that this makes me thing of Lovecraft kinds of shows my age :-)


Samah(Posted 2012) [#30]
In case you didn't get the reference:
http://anidb.net/perl-bin/animedb.pl?show=anime&aid=8719

Back on topic, I've checked the latest Hg default branch into Subversion.