Transformation complete. Output: A fresh repository with all my code base migrated from SVN to GIT.

Yes, I agree that I am late in using a version control. First of all i am a student and not a programmer. Frankly I started writing a bit code once i started using Django. Later on these days I am writing a bit of python as well. Previously, I tried using SVN as a version control past one year. But I just had horrifying experiences with it. I admit that I may be using it wrongly. When I create a SVN repository and make some changes in my local copy and try to commit the updates it simply says ..

svn: Commit failed (details follow):   
svn: Your file or directory 'models.py' is probably out-of-date    
svn: The version resource does not correspond to the resource within the    
     transaction.  Either the requested version resource is out of date (needs   
     to be updated), or the requested version resource is newer than the    
     transaction root (restart the commit).

A svn up didn’t fix the issue and neither did running svn clean. All the files are tracked by a folder lib/ which exists in the project root. I had to delete the lib/ folder completely.

rm -fr lib

And the svn up to get the repository. Then start working again untill you encounter the same error.

I am just frustrated. I cannot do this anymore. I stopped using version control a while ago. I was planning on to give Git/ Hg a try. Finally a month ago I started using git. Simple and straight. I love many of the Git features.

  • The concept of local commit is awesome. I can work remotely and do what shit I want and push all of them at a time. I can also manage which commits can be grouped as a single commit in the remote.

  • Ability to have multiple repositories. I cannot harness this feature right now but somewhere in the near future. Adding your co-developers as remote is really cool. I can pull updates selectively which other developers need not see.

  • Better merging algorithm. Obviously which is a requirement for all the users out there. I just had only one situation where I had to manually resolve a merge.
  • Rebasing. Something I have n’t used to full extent. But a cool feature of reversing my updates and applying them one after other after getting updates from the repository.
  • Gitk a cool UI but I hate the look and feel. I am using GitX instead. Its really cool to see all the updates step by step. I learned a lot from Will Larson’s git repositories. I observe the flow of the development and how he approaches towards the development.

GitHub is a big asset to the Git users out there. A secure git hosting with all the necessary social networking aspects where developers follow other developers and projects as well.

I am very comfortable with Git now a days and I am using it for all the projects. Also I just found a few cool features. You can push your Git repositories to Amazon S3 hosting which is cheap of course just as a backup since there wont be any Git daemon running. Also if you have a dropbox account you can create a remote repository for your project which resides in the dropbox shared folder. When ever you want to show some updates to co-developers you can push the updates to the shared remote repository and dropbox uploads all the files from shared folder into their cloud. Over the web you can create a shared folder and add a collabarator. This way Git + DropBox works well in small teams there by keeping the source code away from public.

And if you are looking to learn Git, I advice you to read Git Internals by Scott Chacon. Recently he also launched a Git community book which is free. He gives a pretty good details into the internals of Git which makes comfortable when using it. Thanks Scott.

Thank you Linus Torvalds for creating it and making it open source.

Finally a version control that makes sense to me - GIT