Skip to content

Commit 5941b87

Browse files
authored
Merge pull request #9 from cecom/fix-merge-unrelated-histories
Fix merge unrelated histories
2 parents cb35377 + 5d7c27a commit 5941b87

6 files changed

Lines changed: 65 additions & 1 deletion

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>de.oppermann.pomutils</groupId>
44
<artifactId>pomutils</artifactId>
5-
<version>1.4</version>
5+
<version>develop</version>
66

77
<licenses>
88
<license>

src/main/java/de/oppermann/pomutils/util/POM.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,18 @@ public POM(String pomFileAsString) throws IOException, XMLStreamException {
7373
throw new IllegalArgumentException("File [" + pomFile.getAbsolutePath() + "] not found.");
7474
}
7575

76+
if (pomFile.length() == 0L) {
77+
/*
78+
* If we use git merge --allow-unrelated-histories, the base pom file
79+
* can be empty, so it cannot be parsed
80+
*/
81+
rawModel = null;
82+
projectIdentifier = null;
83+
projectVersion = "";
84+
parentVersion = "";
85+
return;
86+
}
87+
7688
initialize();
7789
}
7890

src/test/java/de/oppermann/pomutils/PomMergeDriverTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,4 +209,28 @@ public void testAutoMergeFailed() throws Exception {
209209

210210
assertEquals("same version now", ourProjectVersion, theirPom.getProjectVersion());
211211
}
212+
213+
public void testAutoMergeWithNoBaseCommit() throws Exception {
214+
String myTestSubFolder = "merge/autoMergeSucceded_noConflict_their";
215+
216+
TestUtils.prepareTestFolder(myTestSubFolder);
217+
218+
String basePomFile = TestUtils.resourceBaseTestFolder + "/" + myTestSubFolder + "/base.pom.xml";
219+
String ourPomFile = TestUtils.resourceBaseTestFolder + "/" + myTestSubFolder + "/our.pom.xml";
220+
String theirPomFile = TestUtils.resourceBaseTestFolder + "/" + myTestSubFolder + "/their.pom.xml";
221+
222+
Ruleset ruleset = new Ruleset(SelectionStrategy.THEIR);
223+
224+
PomMergeDriver pomMergeDriver = new PomMergeDriver(ruleset, basePomFile, ourPomFile, theirPomFile);
225+
int mergeReturnValue = pomMergeDriver.merge();
226+
227+
assertTrue("merge succeeded", mergeReturnValue == 0);
228+
229+
POM theirPom = new POM(theirPomFile);
230+
POM ourPom = new POM(ourPomFile);
231+
232+
assertEquals("their", ourPom.getProjectVersion());
233+
assertEquals("their", theirPom.getProjectVersion());
234+
}
235+
212236
}

src/test/resources/merge/autoMergeWithNoBaseCommit/base.pom.xml

Whitespace-only changes.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2+
<modelVersion>4.0.0</modelVersion>
3+
<groupId>de.oppermann.git.pommergedriver</groupId>
4+
<artifactId>pommergedriver</artifactId>
5+
<version>our</version>
6+
<dependencies>
7+
<dependency>
8+
<groupId>org.codehaus.mojo</groupId>
9+
<artifactId>versions-maven-plugin</artifactId>
10+
<version>2.5</version>
11+
<type>maven-plugin</type>
12+
</dependency>
13+
</dependencies>
14+
</project>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2+
<modelVersion>4.0.0</modelVersion>
3+
<groupId>de.oppermann.git.pommergedriver</groupId>
4+
<artifactId>pommergedriver</artifactId>
5+
<version>their</version>
6+
<dependencies>
7+
<dependency>
8+
<groupId>org.codehaus.mojo</groupId>
9+
<artifactId>versions-maven-plugin</artifactId>
10+
<version>2.5</version>
11+
<type>maven-plugin</type>
12+
</dependency>
13+
</dependencies>
14+
</project>

0 commit comments

Comments
 (0)