Friday, August 13, 2010
Gist... awesome?
Many in the bitbucket/mercurial community seem to dislike the idea.
Are they right? Who knows.
Friday, May 28, 2010
Dropping Perforce
Essentially, there are no faults in Perforce I was not aware of or some other problem inherent with Perforce. I just found out I’m far more productive with other tools.
The first problem is typical of my setup and has nothing to do with Perforce: my home server connection is faulty. Sometimes there is no way to access the server from outside and sometimes the 1666 port is not reachable because of firewalls. Of course, it is not Perforce fault: in this situations it is often the case I could not reach 22 as well (that is the port I use mainly with both git and mercurial through ssh). However, I’ve been able to place the repositories on an external server (where I can’t just install the Perforce server) and I could always use github.
The main advantage with both Mercurial and Git is that if I have connection problems, I can just go on and work locally. Perforce simply sucks in this situation. By the way, when I’m travelling it is quite frequent I’m offline. Both git and mercurial allow me to work with no burden added.
Perforce uses a model different from other modern Source Control Management Systems (SCMSs) which somewhat resembles old locking SCMSs. Essentially, if you have to edit a file you have to mark it for editing. This can have several advantages, however, I never got used to it. Moreover, since I used it to manage .configuration files in my home directory as well, to change a single bloody line of code I had to:
- cd to the Perforce workspace directory
- mark the file for editing
- edit the file
- commit
Moreover, with my desktop computer, my apple laptop, my netbook (dualboot win+lin) and a workstation I had to test some software I already used all the workspaces the free version of Perforce allows me to have. This is rather unfortunate, as I often use virtual machines as well. Of course paying the bloody perforce license to do this kind of things is just stupid.
In the meantime, I found that distributed SCMs had none of those problems. Backup is regularly performed by Time Machine, so that was not an issue either, as long as I keep a clone of each repository on my MacPro. Moreover, the remote server where I keep some projects is very well managed and thoroughly backed-up.
I like the branching/cloning strategy superior (according to my needs) than the integrate stuff Perforce uses. I suppose we can prove them equivalent, however, I like git/mercurial better. I also changed my view on rebase and other commit editing stuff. Sometimes, I find them useful. After all it is my repository: I’m free to screw it up. This does not mean I will or should.
So I stopped moving projects from Mercurial to Perfoce. On the other hand I’m using git to extract projects from Perforce (git-p4, in fact). Well, it works nice. I will keep my Perforce server only for historical purposes, as imported git-p4 project may lose some branching information.
[0] Actually you can manually set an option in order to override the thing
Thursday, April 9, 2009
Perforce Conversion?
I’ve always been critical on user interfaces. In two different senses.
Bad user interfaces drive me crazy: I think designing crappy user interfaces should be a criminal offence.
On the other hand, I’ve always been on the “command line side” when speaking about development tools.
Of course I use graphical editor (gvim is a graphical editor, and Emacs as well). But the center of my development is the shell. From the shell I call the editor, from the shell I run the build tools, etc etc etc. That’s to say I’m pretty “against” bloated IDE’s, even though recently I started some serious experimentation with Emacs, but that’s wholly another story.
Back to SCM I recently took some SCM classes (a whole course on source configuration management, indeed). And during the course, we had some lab exercises with Perforce. I never used Perforce before that: I knew there was this Perforce thing which was better than CVS but costed lots of $$$ and was closed source and if you used that you were almost as evil as if you used Windows.
In the meantime I got bore with the free software movement, started using the Mac (which is almost as evil as Microsoft) and lots of proprietary software which makes my life far easier. However, many teams switched to subversion (which is far better than CVS as well) and some times later I experienced the distributed SCM revolution. I started with git which I rapidly dropped favouring Mercurial.
Using Perforce seemed to me quite anti-climatic, in this sense. But Perforce had something I always desired in SCM tools. That is to say a very good graphical interface. Especially for version graphs. And a graphical merge tool. An integrated graphical merge tool, so that you don’t have to find one when on Windows, for example.
Moreover, branching is a breeze. The integrate command is something wonderful. Indeed I never used that much branching in my home projects. Now I just can’t thing how could I do without it. In this sense, the GUI is rather didactical: I just can explore menus and commands and learn new functions of my tool.
Moreover, installing the server is really easy (differently from subversion). And my dyndns powered machine can host all my work. Very interesting indeed.
I forgot to mention: as long as I use less than 2 users, I can use the Perforce server for free. Since they are my own projects...