Why I'm updating Piston instead of using Braid
Jean-François commented on Piston will get Git support:
You might want to check out braid, formerly known as giston.
I knew about Braid. The way I see it, Braid requires Git. Without it, it is useless. What I want to do with Piston instead is to be completely repository and working copy agnostic. Use the best possible solution given the tools at hand: Subversion properties when appropriate, YAML files if I can’t. Use Git to merge if possible, do it using Subversion if I can’t. And so on.
I even had a request for supporting SVK by Faisal. It will be very important for me to allow any combination of server/working copy. Anyway, more code, less talk. Once I have a workinjg release, you’ll be able to judge the quality of my work.
March 7th, 2008 at 11:06 AM
Yes, braid is useless without git and i kinda like it that way :). I think it’ll help to just focus on git and be able to use the more advanced features available because of that.
Initially, I wanted to do with braid the same thing you are doing now (that’s why it got renamed from giston). These are my experiences with that approach and how I think they might help you.
I’m repeating the cases form your previous post for clarity:
The first implementation of giston worked like case 3 (svn mirror in git repo) in your previous post, but it had bugs because my approach was more hackinsh than what piston does. You’ll probably have less bugs since piston is smarter about it. You could use git attributes instead of svn:properties or a yaml file. I didn’t bother with this and just used yaml::store :).
When I started thinking about implementing case 2 (git mirror in svn repo) I realised that I’d have to clone the repo each time i did an update and then sync the files in the svn working copy.
Also, I had no idea, and still don’t have one, about how to do a git diff on a remote repository. From asking around, it seems you can’t do that and need to clone it first. Maybe having a ~/.piston/moo.git cache somewhere with a bare clone would help (capistrano does this).
For the last case, you can’t really use submodules because they act pretty much as svn externals, so people won’t be able to commit changes on top of the mirrors. Because of this, I found out about git-merge-subtree and that’s what I’m using in braid.
Sorry for the long comment, hope it helps :) Cristi
March 7th, 2008 at 12:02 PM
My point was more about maybe the two of you could join forces, but it seems you each want to take a slightly different approach.
But then again, I don’t see the point in still using subversion when there is git and it is very easy to import a svn repo into git. :P
Braid seems to handle the important cases, namely 3 and 4. ;)