lst: unify partial commit methods

This commit is contained in:
Aleksey Pivovarov
2018-02-15 20:04:50 +03:00
parent e70879da14
commit f1e420a925
4 changed files with 24 additions and 12 deletions
@@ -369,18 +369,26 @@ class PartialLocalLineStatusTracker(project: Project,
}
fun hasPartialChangesToCommit(): Boolean {
return documentTracker.readLock {
affectedChangeLists.size > 1
}
}
fun getPartiallyAppliedContent(side: Side, changelistIds: List<String>): String {
return runReadAction {
val markers = changelistIds.mapTo(HashSet()) { ChangeListMarker(it) }
documentTracker.getContentWithPartiallyAppliedBlocks(side) { markers.contains(it.marker) }
val toCommitCondition: (Block) -> Boolean = { markers.contains(it.marker) }
documentTracker.getContentWithPartiallyAppliedBlocks(side, toCommitCondition)
}
}
@CalledInAwt
fun handlePartialCommit(side: Side, changelistId: String): PartialCommitHelper {
val marker = ChangeListMarker(changelistId)
fun handlePartialCommit(side: Side, changelistIds: List<String>): PartialCommitHelper {
val markers = changelistIds.mapTo(HashSet()) { ChangeListMarker(it) }
val toCommitCondition: (Block) -> Boolean = { markers.contains(it.marker) }
val contentToCommit = documentTracker.getContentWithPartiallyAppliedBlocks(side) { it.marker == marker }
val contentToCommit = documentTracker.getContentWithPartiallyAppliedBlocks(side, toCommitCondition)
return object : PartialCommitHelper(contentToCommit) {
override fun applyChanges() {
@@ -388,7 +396,7 @@ class PartialLocalLineStatusTracker(project: Project,
val success = updateDocument(side) { doc ->
documentTracker.doFrozen(side) {
documentTracker.partiallyApplyBlocks(side, { it.marker == marker }, { _, _ -> })
documentTracker.partiallyApplyBlocks(side, toCommitCondition, { _, _ -> })
doc.setText(contentToCommit)
}
@@ -422,6 +422,10 @@ abstract class BaseLineStatusTrackerTestCase : LightPlatformTestCase() {
}
fun handlePartialCommit(side: Side, list: String): PartialLocalLineStatusTracker.PartialCommitHelper {
return partialTracker.handlePartialCommit(side, listOf(list.toListId()))
}
fun moveChanges(fromList: String, toList: String) {
assertContainsElements(changeListNames(), fromList)
assertContainsElements(changeListNames(), toList)
@@ -205,7 +205,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
assertBaseTextContentIs("A_B_C_D_E_F_G_H_")
assertAffectedChangelists("Default", "Test")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Test".toListId())
val helper = handlePartialCommit(Side.LEFT, "Test")
helper.applyChanges()
assertHelperContentIs("A_B_C_E_F_G_N_H_", helper)
@@ -228,7 +228,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
assertBaseTextContentIs("A_B_C_D_E_F_G_H_")
assertAffectedChangelists("Default", "Test")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Default".toListId())
val helper = handlePartialCommit(Side.LEFT, "Default")
helper.applyChanges()
assertHelperContentIs("A_B1_C_D_E_F_M_G_H_", helper)
@@ -251,7 +251,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
assertBaseTextContentIs("A_B_C_D_E_F_G_H_")
assertAffectedChangelists("Default", "Test")
val helper = partialTracker.handlePartialCommit(Side.RIGHT, "Test".toListId())
val helper = handlePartialCommit(Side.RIGHT, "Test")
helper.applyChanges()
assertHelperContentIs("A_B1_C_D_E_F_M_G_H_", helper)
@@ -278,7 +278,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
runCommand {
"B1_".replace("X_Y_Z_")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Default".toListId())
val helper = handlePartialCommit(Side.LEFT, "Default")
helper.applyChanges()
assertHelperContentIs("A_X_Y_Z_C_D_E_F_M_G_H_", helper)
@@ -307,7 +307,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
runCommand {
"B1_".replace("X_Y_Z_")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Default".toListId())
val helper = handlePartialCommit(Side.LEFT, "Default")
"N".replace("N2")
"M".replace("M2")
@@ -388,8 +388,8 @@ public class GitCheckinEnvironment implements CheckinEnvironment {
return null; // commit failure
}
if (tracker.getAffectedChangeListsIds().size() > 1) {
helpers.add(tracker.handlePartialCommit(Side.LEFT, changelistId));
if (tracker.hasPartialChangesToCommit()) {
helpers.add(tracker.handlePartialCommit(Side.LEFT, Collections.singletonList(changelistId)));
partialChanges.add(change);
}
}