History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: IDEABKL-5199
Type: New Feature New Feature
Status: Open Open
Priority: Normal Normal
Assignee: Unassigned
Reporter: Igor Karpov
Votes: 0
Watchers: 0
Available Workflow Actions

Mark as Stalled
Operations

If you were logged in you would be able to see more operations.
IDEA: Backlog

Better support for development in branches

Created: 02 Aug 07 12:45   Updated: 16 Aug 07 19:14
Component/s: Version Control Integration
Affects Version/s: None
Fix Version/s: None

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown

Build: 7,104


 Description  « Hide
We often use branches for development, making changes that are not ready to be integrated into trunk.
Idea does not support development in branches well.

Let's say, a module is located in svn:/.....moduleA/trunk, or in svn:/...../trunk/path/moduleA, and corresponding branches are in svn:/.....moduleA/my_branch or in svn:/...../my_branch/path/moduleA.
Trunk and branch are checked out into different locations in the filesystems, e.g. c:/..../moduleA and c:/.../moduleA__my_branch.

I have to create two IDEA modules: for trunk and branch and name them differently, like "moduleA" and "moduleA__branch".
Switching between them is not convenient, I have to change the project structure by adding one module and removing another. As modules have dependencies, it also poses problem - how to configure dependencies on moduleA?
Modules could be "parametrized" - something like moduleA<trunk> and moduleA<my_branch> instead of "moduleA" and "moduleA__my_branch". That would solve problems with dependencies.

There is also an approach to use 'svn switch', but we do not use it, because it is not convenient to share the same filesystem location for different branches (local changes can be made to both, structure may change a bit - that's why branches exist). Also, it is often necessary to work on both branches (occasionally there can even be more branches in use)

It would be really nice to have support for branch development. For instance, to be able to easily change the branch for the module.
Ideally, in the project structure a module taken from the branch could be 'visually distinguishable' - have a different icon and/or text attributes. It can also contain a name of the branch: e.g. just "moduleA" for trunk module and "moduleA (my_branch)" for branched version. It should be possible to switch a module to a different branch, e.g. with [Right click on module]>(optional: Subversion) > Switch to branch > [names of branches]. Perhaps, this switching can be alternatively done also with "svn switch" for those who prefer "svn switch".

Additional nice-to-have features could be: rendering files that are different in the current branch differently in the project view (I heard that svn switched files are rendered differently)

IMHO, first-class support of various VCS use-cases is important. At least for us, it takes significant amount of time to support branches, switching between them, tracking changes in these branches, merging changes between them..



 All   Comments   Work Log   Change History      Sort Order:
Sankara Rameswaran - 07 Aug 07 17:25
I too agree on this. I had to write a script to achieve a closer result.

Dmitry Jemerov - 07 Aug 07 17:28
Why not simply have a separate .ipr file for each branch?

Igor Karpov - 07 Aug 07 19:33
I had this idea but it's not practical. It may work for situation where there is just a trunk and a branch and switching is done once a month.
Well, for instance, we have more than 100 modules in 10 repositories now and it's going to be about 20. We have branches for half of these and have to switch between branches quite often. In other teams, they have the rule to create a separate branch for every bug fix they make (perhaps it will be our fate as well).

I'm not feeling like creating a new project for every permutation of branches I have to use at the moment, or for every bug I fix.
Also, it means I have either to re-setup a module each time (and every module has numerous dependencies), or to copy-and-paste .iml files and fiddle with it in the text editor. It has to be easier. I've came to the point where administration of the project is taking so much time, that a project is never fully set up..


Dmitry Jemerov - 16 Aug 07 19:14
We agree that the problem exists, but so far we don't see a solution which would avoid too much compexity and work equally well with different branching models supported by different VCSes. Suggestions for how this can be implemented are welcome from everyone.