Using Subversion with Piston to do vendor branch management for an entire open source Ruby on Rails application
People are moving away from managing their Rails plugins with svn externals towards Piston’s easy vendor branch management approach.
But what if you want to use Piston’s easy version of Subversion’s vendor branch management for dealing with the code for an entire Rails application based on an open source project like Mephisto, Collaboa, or in my case Kete?
It is a common workflow pattern to set up a client project based on an existing application that has an external repository, modify to suit, and run with it. Quite often people will base their new client project repository on an “svn import” from a moment in time and then either have to merge in improvements from the base open source project’s progress by hand, or coming up with their own scheme for keeping the two repositories in sync. This is because there is no explicit dependency on the old repository in the new client repository, only initial or periodic code dumps from the parent project. In other words, a big pain.
Others use tools like SVK to do local mirrors of the parent open source project. However, you still end up relying on individual developers to be good about their merging in of source project’s codebase in a methodical manner. My goal was to have a systematic tool so that any developer update the third party code, deal with any conflicts with custom code, commit it back to the client repository, and all other developers would receive it when they next updated. In other words, a dependency managed directly in the subversion repository for the client project.
I was looking for a solution that was as simple as Piston’s management of the vendor directory and realized that there must be a way to just use Piston. So I emailed François Beausoleil, the developer of Piston, and he replied with a blog post that outlined the solution in no time at all.
I had spent a fair amount of time looking for the answer, so I hope this helps others with the same problem.