andreas1234567 has asked for the wisdom of the Perl Monks concerning the following question:

I recently listened to Randal Schwartz' (aka merlyn) and Leo Laporte's podcast interview with Junio Hamano, maintainer of the git version control system, on FLOSS weekly episode 19. Mr. Schwartz revealed that he is using git for his source code management, either directly ("anything I get to choose, I use git"), or as a front-end to CVS or Subversion through git's interface layers ("they don't know I'm using git").

I was intrigued by some of the features of git, for instance the ability to track the child-parent relationship for every commit using cryptographic hashes.

I've been using CVS up until now, but the way it prevents moving and renaming files makes me want to consider alternatives. Until I heard the above podcast that alternative has been Subversion only.

The Perl projects I work on are neither very large nor distributed. Should I consider git as my future SCM for Perl projects? What are the Monks' experience with using git in Perl projects?

--
Andreas

Replies are listed 'Best First'.
Re: git for Perl projects?
by Fletch (Bishop) on Sep 27, 2007 at 21:57 UTC

    Don't feel you have to limit yourself to one of the new breed of distributed SCMs. With the right tools you can interoperate and/or move between them fairly easily.

    I've been playing with Mercurial and (despite it being in Python *blech* :) it's worked pretty well and is an interesting departure from SVN with some neat features (the embedded web interface is nice, for one). At some point I also want to look at bzr and monotone. Find what works for you (and if you need to interoperate with someone using something else you probably will be able to with Tailor).

      This is slightly OT, but has anyone else noticed that a great diversification in tools is happening within the OSS community?

      The most prominent example I can think of is the explosion in popularity of Perl "alternatives" - namely Python and Ruby.

      Another example is version control. It seems that the emergence of Subversion has caused not only an explosion of options, but of entire paradigms - more specifically, centralized versus distributed.

      It seems to me that there are different reasons for each of the examples above. I personally feel that Python has become popular not because it stole Perl users, but because it open the door for an underserved demographic of programmers. I don't know where to find the stats, but I would imagine that Python did not convert too many people who truly liked Perl. In fact, it seems to me that anyone who has switch simply liked Python better because it was more in line with their style or way of thinking. Most Python programmers I know find it nearly impossible to express their thoughts in Perl, but can do it naturally in Python. I am the exact opposite - and I imagine most PMs are the same way.

      Regard version control, it seems more like the concept of doing such a thing has simply caught on as the right thing to do. This has therefore allowed the debate between VC methodologies (centralized vs distributed) to share the spot light that used to only illuminate the discussion about why one should use vc. Maybe it is just a matter of alternatives - there used to be only a handful of programming languages out there. Now there are thousands.

      Part of me can't help but think that in addition to the above conclusion, there is a factor here that causes those who consider themselves "133t" to push higher into the more esoteric realms. What I mean to say is that while more people become "enlightened" about tools and practices, there is a certain group of intelligentsia that feel compelled to maintain their status wrt the common users by exploring more and more arcane methods. Maybe this is true, maybe it is not - if it is, I am also sure that it is a natural process that has been repeated many times before and I am just starting to notice it.

        I get the impression that both of the cases you cite are driven by dissatisfaction with the existing standard tools.

        Perl has been very successful, but it's not without its problems. Hence: Python, Ruby, and even Perl 6. Perhaps I see these projects as a reaction to Perl 5 because I am a Perl programmer, and that's my perspective. Nevertheless, all these project sound to me like someone is doing "Perl, as it should have been."

        Revision control is the same thing. CVS's problems have pained projects for ages, and Subversion aimed to fix that. The explosion in distributed RCS seems to stem from Linus Torvalds saying he needs that kind of system to work on Linux. Everybody knew that any system that would work for the mighty Linux would get a lot of attention (i.e., a good reputation). People tried to take the crown from BitKeeper, but ultimately Linus made his own solution (git). I suspect that after some more time passes, a number of the numerous RCS solutions out there are going to pass as well.

Re: git for Perl projects?
by perlfan (Parson) on Sep 27, 2007 at 21:07 UTC
    I don't use distributed version control, but if I did I'd go with SVK or Bazaar. I can't actually imagine anything I work on requiring distributed vc, but you never know. Currently my projects, like everyone else's, are split between Subversion and CVS.
Re: git for Perl projects?
by jfroebe (Parson) on Sep 28, 2007 at 15:24 UTC

    For the most part, it really doesn't matter which version control system you use. Think about it.. for most open source or even commercial projects, you have a small number of developers that are active on the project. Usually in the single digits. The level of sophistication required of the version control system isn't pretty high - checkout/checkin/comment/etc. It isn't until you have a lot more developers, a very complex project, or some other thing. Using CVS, Subversion, GIT, rcs, or even SCCS will work fine for most projects.

    GIT is just the revision control system flavor of the week for primarily the Linux kernel developers. If you want to use it, do so. If not, don't worry about it. Use what feels comfortable to you.

    hope this helps,

    Jason L. Froebe

    Blog, Tech Blog

Re: git for Perl projects?
by ask (Pilgrim) on Oct 01, 2007 at 08:58 UTC
    Git is an amazing pain to use compared to the beautiful simplicity of SVN.

    That being said, I've started to use it for some things on my laptop where I before were using svk.

    It's been pretty nice so far, even if git has a ridiculous and confusing number of scripts (and sorely lack something like the svn book).

    - ask

Re: git for Perl projects?
by adrianh (Chancellor) on Oct 01, 2007 at 13:50 UTC
    or as a front-end to CVS or Subversion through git's interface layers ("they don't know I'm using git").

    Can you "push back" with these from git into an svn repo?

      Can you "push back" with these from git into an svn repo?
      Yes you can, according to the interview. Apparently it's git-svn that does that. (Please correct if untrue).
      --
      Andreas
Re: git for Perl projects?
by Anonymous Monk on Sep 28, 2007 at 00:32 UTC
    Goan git