diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskConfigurable.form b/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskConfigurable.form index 9a070abb8670..d180f74e08ee 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskConfigurable.form +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskConfigurable.form @@ -1,6 +1,6 @@
- + @@ -10,7 +10,7 @@ - + @@ -20,7 +20,7 @@ - + @@ -29,12 +29,12 @@ - + - + @@ -60,7 +60,7 @@ - + @@ -68,7 +68,7 @@ - + @@ -77,7 +77,7 @@ - + @@ -87,7 +87,7 @@ - + @@ -96,7 +96,7 @@ - + @@ -174,9 +174,26 @@ - + + + + + + + + + + + + + + + + + + diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskConfigurable.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskConfigurable.java index 06f2685fceb1..4ac88ac54628 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskConfigurable.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskConfigurable.java @@ -45,9 +45,13 @@ public class TaskConfigurable extends BindableConfigurable implements Searchable @BindControl("changelistNameFormat") private JTextField myChangelistNameFormat; + private JBCheckBox myAlwaysDisplayTaskCombo; private JTextField myConnectionTimeout; + @BindControl("branchNameFormat") + private JTextField myBranchNameFormat; + private final Project myProject; private Configurable[] myConfigurables; private final NotNullLazyValue myControlBinder = new NotNullLazyValue() { diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/impl/TaskManagerImpl.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/impl/TaskManagerImpl.java index 43c188005d9f..1ad22f304867 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/impl/TaskManagerImpl.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/impl/TaskManagerImpl.java @@ -981,8 +981,8 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe } public String suggestBranchName(Task task) { - if (task.isIssue() && StringUtil.isNotEmpty(task.getNumber())) { - return task.getId().replace(' ', '-'); + if (task.isIssue()) { + return TaskUtil.formatTask(task, myConfig.branchNameFormat).replace(' ', '-'); } else { String summary = task.getSummary(); @@ -1038,6 +1038,7 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe public boolean markAsInProgress = false; public String changelistNameFormat = "{id} {summary}"; + public String branchNameFormat = "{id}"; public boolean searchClosedTasks = false; @Tag("servers") diff --git a/plugins/tasks/tasks-tests/test/com/intellij/tasks/TaskManagerTest.java b/plugins/tasks/tasks-tests/test/com/intellij/tasks/TaskManagerTest.java index 030daa238e65..844dbd5156cb 100644 --- a/plugins/tasks/tasks-tests/test/com/intellij/tasks/TaskManagerTest.java +++ b/plugins/tasks/tasks-tests/test/com/intellij/tasks/TaskManagerTest.java @@ -133,4 +133,19 @@ public class TaskManagerTest extends TaskManagerTestCase { assertEquals(historyLength, myTaskManager.getLocalTasks().size()); assertEquals(Integer.toString(historyLength + 100 - 1), myTaskManager.getLocalTasks().get(historyLength - 1).getId()); } + + public void testBranchNameSuggestion() throws Exception { + TaskTestUtil.TaskBuilder task = new TaskTestUtil.TaskBuilder("IDEA-666", "Bad news", null); + assertEquals("IDEA-666", myTaskManager.suggestBranchName(task)); + String format = myTaskManager.getState().branchNameFormat; + try { + myTaskManager.getState().branchNameFormat = "feature/{id}"; + assertEquals("feature/IDEA-666", myTaskManager.suggestBranchName(task)); + myTaskManager.getState().branchNameFormat = "{id}_{summary}"; + assertEquals("IDEA-666_Bad-news", myTaskManager.suggestBranchName(task)); + } + finally { + myTaskManager.getState().branchNameFormat = format; + } + } }