segunda-feira, maio 18, 2009

Get your own bazaar hosting service for free

I was looking for a free bazaar hosting service that let me use it with my private projects. Unfortunately I was not able to find anyone.

This week I came across DropBox. DropBox is a site that let you share files between computers (and between people if you wish to). The basic plan give you 2GB for free!

DropBox interface is pretty easy to use. One folder (usually named DropBox) will be used to share your files.

You put a file into the folder and it will be available into any computer you log in. have you changed the file? DropBox will update it.

Don't you want the file anymore? Delete it from your Dropbox folder and it will be delete from other computers too (as soon as you get logged into them). DropBox will keep your files synchronized. You don't have to worry about it.

So, I decided to use it as a bazaar repository. I created a folder named bzr.d under DropBox. All files I want to keep under source control are inside this folder.

Now I have my own bazaar hosting for free. And know what? You can share your bazaar repository (bzr.d in my case) with some friends and all of you will be able to develop the same project. It's a bad idea to share your repository as I've told. The reasons were pointed out by our friend Andreas (see bellow on comments). Andreas, many thanks for pointing this out.

This solution (Dropbox + bazaar) works well when there is just one developer working on it. I do it since a long time without any problem.

You can even have many repositories at the same time (since they don't occupy more than 2GB).

Do you need more space? DropBox has two paid plans (50GB and 100GB).

And you can use it as a hosting for git and mercurial too.

Edited: As you can see in comments, our friend JavaJim gave us a nice tip (Thanks JavaJim):

"If you init your bazaar repository with command bzr init-repo --no-trees my-new-dropbox-repo you can save a lot of space on dropbox. Plus, you force your friends to work on their own branches instead of editing files on dropbox directly (with no-trees bazaar hides the source files)."

I think it's worth a try.

6 comentários:

JavaJim disse...

Marcio, I love this post :) ... It works like a charm. The best things in life are simple...

If you init your bazaar repository with command bzr init-repo --no-trees my-new-dropbox-repo you can save a lot of space on dropbox. Plus, you force your friends to work on their own branches instead of editing files on dropbox directly (with no-trees bazaar hides the source files).

many thanks!

Dennis

Marcio Andrey Oliveira disse...

Hi, JavaJim.

I'm happy you liked my post and I'm happier with your tip. :)
I've edited the post to include it in the text.

Thanks.

Andreas disse...

The file update process of bazaar and dropbox will interfere if you start working with more and ore people on such a "shared" repository.

It's more likely that you will blow up your repository with this kind of "sharing".

Don't get me wrong, I for myself and for me only are using this kind of sharing between my computer at home and my computer at work for some smaller projects. But as there is no concurrent access to the repository it is "safe" as long I know what I do.

However, "sharing" a repository with _other_ people and so creating real _concurrent_ access to the repository is not a good idea!

Marcio Andrey Oliveira disse...

Hi, Andreas. Thanks for taking your time to share your thoughts.

You are right. This approach will not fit when you have many people developing the same project.

But for small projects it works well. And when you use JavaJim approach of create a repository in a way that users will need to develop on their own machines and just from time to time they will synchronize with the repository the burdens diminish a lot.

Regards.

Andreas disse...

Hi Marcio,

As JavaJim points out, there should be no tree on the dropbox folder, which is always a good idea for the server.

But that was not my concern. To make e.g. a commit, bazaar needs to touch different files on the server, some in a special order. Now dropbox could sync the files in a different order, or sync later with two different versions created...

A possible scenario:

User A starts a Commit and user B starts a commit. If this would be a real server, they would manipulate the _same_ files, which is prohibit by bazaar.

But with dropbox each of them are manipulating a _local_copy_ of all the files. And dropbox have to sync them. Even if the synchronization doesn't happen while the two bazaar instances are running, they are independent.

And dropbox will either found two independent changes without knowing how to merge them, as dropbox doesn't know anything about bazaars internals, or it will e.g. override one folder on As PC with the content of the other folder on Bs PC. The result would be a lost of the changes A has done.

brgds

Marcio Andrey Oliveira disse...

Hi, Andreas.

It's nice to see you again.

I read carefully what you wrote and you are completely right.

I've changed the post based on your information (all credits to you, of course).

Thanks a lot.