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 @@
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;
+ }
+ }
}