Practical way to use separate working folders for specific branches?


We have several projects that are very time consuming to build, so we normally rely on incremental builds, with the occasional full overnight build.

However, when making certain major upgrades, we need full rebuilds to avoid incompatibility problems. Normally we make these major upgrades on a branch, but it becomes very slow when we have to switch between the stable and upgraded branch as it more or less requires full rebuilds each time. And we're talking on the scale of several hours for full builds compared to <30 minutes for incremental.

Thus, we'd like to come up with a way to run these special branches in a separate working folder, so they don't have to intermix in the same folder. Is there any practical way to make that happen without simply making two projects with different branch filters?

We use a central DSL and each project has some 10-15 build types, so it's not too hard to update all the projects once I have a sensible solution.

1 comment
Comment actions Permalink
Hi Andreas,

the best way to apply different rules to different branches is to have them in separate configurations. If you use the kotlin DSL, it should be relatively easy to just apply the same code to both configurations but do the adjustment for one of them. You can adjust the checkout directory in the VCS Settings page of the build configuration for that purpose (or on the correspondent setting in kotlin)

Does this solve the problem, though? Unless I'm misunderstanding something, new commits after the major upgrade would be based on that major upgrade, wouldn't they? If working on a separate directory, those changes wouldn't carry over anyways and would have to do a full rebuild as well.

Please sign in to leave a comment.