Versionning system

Hi all.

I want to apologize, I guess this is not the best place to post this but I'm interested to know what RoR developers think.

What would be a good open source versionning system for somebody that has never used one?

Thanks a lot.

Pepe

After years of using various version controls like CVS and SVN, I finally ended with Git.

Git requires getting used to, but it is good after you learn the ropes.

Thank you to all of you.

I have been reading up about different tools and I was leaning towards Git, among other things because of Github, as Robert mentioned. I don't know much about the tool yet and I know there are 2 sides to it, the shell screen and the GUI version. Is the same functionality available in both areas, which one should I go with?

Thanks a lot again.

Pepe

I haven't used the GUI that much, but I might take a look in the future.

Personally, I happen to like CLI tools overall for many things. Even though Textmate is still one of my favorite editors, there is something nice about opening up VIM and using that for quick edit jobs.

My opinion: try both! :wink:

pepe wrote:

Thank you to all of you.

I have been reading up about different tools and I was leaning towards Git, among other things because of Github, as Robert mentioned. I don't know much about the tool yet and I know there are 2 sides to it, the shell screen and the GUI version. Is the same functionality available in both areas, which one should I go with?

Git syntax for everyday tasks is so simple it really does not warrant a GUI. Looking at past branches and merges, well there a gui like gitk has real value.

Create a new repository: $ git init

Add files to stage: $ git add <directory or filename>

Commit staged files to repository: $ git commit -m"commit message"

Copy a repository: $ git clone [<protocol>://]<path/to/source/repository> </path/to/clone>

Update and merge from a remote repository: $ git pull <protocol>://</path/to/source/on/remote>

Update local commits to remote: $ git push

Check local against remote: $ git fetch

Look at local changes against remote $ git diff

Unwind a local commit and preserve subsequent work: $ git reset --merge

Abandon all local changes and reset to remote: $ git fetch; git status; git pull #all steps required in that order to place index in known state

Ignore files and directories: $ vi .gitignore

The rest of it, and there is a great deal of material in the rest of it, is rarely used. The supported protocols are git://, ssh:// and http(s)://.

I rarely use GUI tools that come with git. Although gitk is really excellent if you want to examine history, especially since feature to use external diff viewer is added. MinGW version of Git works good on Windows but if you need to use git-svn you'll have to work with Cygwin because MinGW version still doesn't work well.

Nevertheless what really amazed me in Git are easy branching and merging, git stash (put away your current, not commited work, make changes and applying ongoing work back) and git bisect that is really helpful in chasing bugs that occur at some point in time.

Thank you very much to all of you for your help. I really appreciate it. :slight_smile:

Pepe