[dev] Git splitting

Michael M Slusarz slusarz at horde.org
Fri Jun 21 22:14:24 UTC 2013


Quoting Michael J Rubinsky <mrubinsk at horde.org>:

> Quoting Michael M Slusarz <slusarz at horde.org>:
>
>> One of the major issues right now, as I see it, is that is is  
>> pretty much impossible for ordinary users to easily create patches.  
>>  We essentially require them to run a completely separate  
>> installation in order to do this.  By changing, we now dramatically  
>> lower the bar for development entry.  People can install and run  
>> their installations through the normal channels (i.e. PEAR), and  
>> then only need to download a tiny subset of Horde (i.e. Horde_Core)  
>> when they discover a bug.
>
> Except that then they can't actually test said patch if they are not  
> running the code they are patching. Of course they can always play  
> with include_path to ensure the git version is included first  
> (assuming they can figure out how to install the libraries properly)  
> but that just opens up a whole other set of problems with  
> dependencies. Not saying we shouldn't split, it's just something  
> else to think about. I don't think this transition is going to be as  
> easy as you are saying it will be for non-horde developers to make  
> use of the split repo.

IMHO, you are way overestimating the effort it would take to do this.

Example:

1. User running their production version of horde from a PEAR install.
2. User discovers Horde_Core issue.
3. User downloads the git repo for Horde_Core anywhere they want on  
their system.
4. User configures autoloading to point to the Horde_Core directory  
they want to use instead of the global Horde_Core  
(horde/config/horde.local.php would be a place to allow this).

Done.  There cannot possibly be an argument that this is more  
difficult than the current process.

Not to mention, I can't wait for this to be the development setup.  I  
just need to download the git repos of the base applications I want to  
work on.  Then I can just do something like install all PEAR libraries  
globally (or, even better, do a composer install of dependencies into  
a local directory).  Then, as I need to work on an individual library,  
I can download it and switch over to using it.  Incremental instead of  
a painful long initial setup.

>> For me, large chunks of version 3 of Horde_Imap_Client have been  
>> written already, and switching to this kind of development will  
>> actually allow that code to see the light of day -- since it is  
>> completely impossible right now to do this with the current setup  
>> (creating a topic branch does NOT work for this kind of thing).
>
> I'm curious why it doesn't work.

I want to work on Horde_Imap_Client version 3.  So I create a topic  
branch.  It is API breaking.  So it breaks IMP.  That is not useful.   
So now I have to essentially write a new version of IMP in that  
branch?  But I just want to change things in Horde_Imap_Client!

Later, I may have to make changes in version 2, which is living in  
master.  These changes should never ever go into version 3.  But at  
some point with a monolithic repository, I will eventually have to  
merge my version 3 changes into master.  But I don't want that!   
Version 3 is a rewrite!  I really don't want to have to figure out  
complex merge conflicts months after I have worked on the code that is  
causing the conflicts.

So to get around this, I instead have to develop version 3 on master  
and do a branch of version 2, where I make fixes and releases.  But  
that won't work because now IMP is broken again.  Aargh!

And initially, I'm thinking version 3 requires a newer version of  
Horde_Mime.  But how does that work?  The answer is absolutely NOT  
"create a separate topic branch for Horde_Mime and continually merge  
it into the topic branch for Horde_Imap_Client".  What does Horde_Mime  
have to do with my changes for Horde_Imap_Client?  They are completely  
independent.  I don't want them on the same branch!  And what if I  
later decide I don't need a new version of Horde_Mime.  How does that  
work?  Backing out all commits touching Horde_Mime is not a valid  
answer.

michael

___________________________________
Michael Slusarz [slusarz at horde.org]



More information about the dev mailing list