Project maintenance


#1

Just wondering how y’all maintain your JUCE projects where you may have made some changes to the JUCE code?

In particular I made changes to juce_RTAS_Wrapper.cpp for multi buss outputs as described in this thread:

http://www.rawmaterialsoftware.com/viewtopic.php?f=8&t=4019

While I like to stay on the latest JUCE tip I have to reapply the above changes every time I update JUCE… I was wondering how other developers deal with this…??

Thanks,

Rail


#2

The best thing to do, if you’re using Git, is to bring JUCE in using git-subtree. After making changes to the JUCE directory in your local repository, use git-subtree split to recreate the JUCE tree with your changes in a new branch. Then rebase that branch against the JUCE master branch from Julian’s repository and it will replay your changes on top. Push the rebased branch to either a local temporary repository, or a remote repository, and then pull it back to your master branch using git subtree pull.

This entire process should be automatic unless there is a merge conflict (i.e. Jules changed something in a file that you have modified). At which point you will have to manually resolve the conflict using the standard techniques.

All of the repositories in my signature that use JUCE, use git-subtree to bring it in - have a look!


#3

Thanks Vinn

I’ll check it out…

Cheers,

Rail


#4

or try to convince jules to:
A: apply this changes to juce
B: change juce, so it is possible to achieve the behavior without the need to patch juce every time you update it, e.g. through virtual functions etc…


#5

I’m new to Git and my first ideas are a clone of JUCE (master) and my changes (e.g. modified Introjucer or the Jucer) in branches.
When I update the master (fetch and rebase), I can merge the master to my branches. The common way is, to make
a branch, try it and than merge it with the master.
The idea is, to have every time a clean (or clone) version of JUCE.
Good way, bad way?

Have I to download the following?
https://github.com/apenwarr/git-subtree

I’m using msysgit v1.7.11 and there is no ‘git-subtree’.

Thomas


#6

[quote=“ThomasM”]I’m new to Git and my first ideas are a clone of JUCE (master) and my changes (e.g. modified Introjucer or the Jucer) in branches.
When I update the master (fetch and rebase), I can merge the master to my branches. The common way is, to make
a branch, try it and than merge it with the master.
The idea is, to have every time a clean (or clone) version of JUCE.
Good way, bad way?[/quote]

So you are keeping the unmodified JUCE repository in the “master” branch of your local JUCE repository? You don’t need to fetch and rebase, you can simply use pull. If you have your own branches with modifications to JUCE, then what you want to do after a pull to master is a rebase of your branch against the master branch. This way it will always look like your changes are placed on top of the tip, and all JUCE merges will be fast-forwards.

Yes. You use git-subtree to make the JUCE repository part of your repository. This way you only have to maintain one repository instead of two (or more). When you bring JUCE in this way, you can make changes to the JUCE source tree as if they were part of your own repository (actually, they are). When you want to bring JUCE up to date you split the JUCE subtree to a separate branch, then rebase that branch against the JUCE master, and finally use git-subtree pull to bring it back into your mainline (I use the --squash option).

If you look at the repositories in my signature you will see they are all totally self contained, including JUCE and VFLib.


#7

The best thing to do, if you're using Git, is to bring JUCE in using git-subtree. After making changes to the JUCE directory in your local repository, use git-subtree split to recreate the JUCE tree with your changes in a new branch. Then rebase that branch against the JUCE master branch from Julian's repository and it will replay your changes on top. Push the rebased branch to either a local temporary repository, or a remote repository, and then pull it back to your master branch using git subtree pull.

Can anybody explain this in a bit more detail? Subtree is part of git now, but I'm not really sure how to get the JUCE updates without overwriting my changes. 

I tried following the instructions here: https://help.github.com/articles/about-git-subtree-merges/ but that causes my changes to get blown away.

Can anybody post the steps with a bit more detail?