Index: pom.xml
===============================================================
--- pom.xml (revision 30369)
+++ pom.xml (working copy)
@@ -3,7 +3,7 @@
org.jvnet.hudson.plugins
plugin
- 1.351
+ 1.382
../pom.xml
Index: src/main/java/hudson/plugins/bazaar/BazaarRevisionState.java
===============================================================
--- src/main/java/hudson/plugins/bazaar/BazaarRevisionState.java (revision 30369)
+++ src/main/java/hudson/plugins/bazaar/BazaarRevisionState.java (working copy)
@@ -12,21 +12,41 @@ import hudson.scm.SCMRevisionState;
* @author Robert Collins
*/
public class BazaarRevisionState extends SCMRevisionState {
- // TODO: have this extends AbstractScmTagAction and offer after-the-fact tagging operation
+ // TODO: have this extends AbstractScmTagAction and offer after-the-fact tagging operation
- /**
- * bzr revid from {@code bzr revision-info }
- */
- public final String rev_id;
+ private final String revNo;
+ private final String rev_id;
- public BazaarRevisionState(String rev_id) {
- if (null == rev_id)
- throw new AssertionError("rev_id must not be null");
- this.rev_id = rev_id;
+ public BazaarRevisionState(String revNo, String revId) {
+ this.revNo = revNo;
+ this.rev_id = revId;
+ }
+
+ public String getRevNo() {
+ return this.revNo;
+ }
+
+ public String getRevId() {
+ return this.rev_id;
}
@Override
public String toString() {
- return "bazaar revid:" + rev_id;
+ return "RevisionState revno:" + this.revNo + " revid:" + this.rev_id;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ boolean result = false;
+ if (other instanceof BazaarRevisionState) {
+ BazaarRevisionState that = (BazaarRevisionState) other;
+ result = this.rev_id.equals(that.rev_id);
+ }
+ return result;
+ }
+
+ @Override
+ public int hashCode() {
+ return this.rev_id.hashCode();
}
}
Index: src/main/java/hudson/plugins/bazaar/BazaarSCM.java
===============================================================
--- src/main/java/hudson/plugins/bazaar/BazaarSCM.java (revision 30369)
+++ src/main/java/hudson/plugins/bazaar/BazaarSCM.java (working copy)
@@ -76,9 +76,9 @@ public class BazaarSCM extends SCM implements Serializable {
return clean;
}
- private String getRevid(Launcher launcher, TaskListener listener, String root)
+ private BazaarRevisionState getRevisionState(Launcher launcher, TaskListener listener, String root)
throws InterruptedException {
- String rev = null;
+ BazaarRevisionState rev = null;
try {
if (launcher == null) {
/* Running for a VM or whathaveyou: make a launcher on master
@@ -102,8 +102,8 @@ public class BazaarSCM extends SCM implements Serializable {
if (ret != 0) {
logger.warning(info_output);
} else {
- String[] infos = stdout.toString().split("\\s");
- rev = infos[1];
+ String[] infos = stdout.toString().trim().split("\\s");
+ rev = new BazaarRevisionState(infos[0], infos[1]);
}
// output.printf("info result: %s\n", info_output);
} catch (IOException e) {
@@ -113,17 +113,17 @@ public class BazaarSCM extends SCM implements Serializable {
}
if (rev == null) {
- logger.log(Level.WARNING, "Failed to get revision id for: {0}", root);
+ logger.log(Level.WARNING, "Failed to get revision state for: {0}", root);
}
return rev;
}
- private void getLog(Launcher launcher, FilePath workspace, String oldver, String newver, File changeLog) throws InterruptedException {
+ private void getLog(Launcher launcher, FilePath workspace, BazaarRevisionState oldRevisionState, BazaarRevisionState newRevisionState, File changeLog) throws InterruptedException {
try {
int ret;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- String version = "revid:" + oldver + "..revid:" + newver;
+ String version = "revid:" + oldRevisionState.getRevId() + "..revid:" + newRevisionState.getRevId();
if ((ret = launcher.launch().cmds(getDescriptor().getBzrExe(), "log", "-v", "-r", version, "--long", "--show-ids")
.envs(EnvVars.masterEnvVars).stdout(baos).pwd(workspace).join()) != 0) {
logger.log(Level.WARNING, "bzr log -v -r returned {0}", ret);
@@ -146,16 +146,15 @@ public class BazaarSCM extends SCM implements Serializable {
IOException, InterruptedException {
PrintStream output = listener.getLogger();
output.printf("Getting current remote revision...");
- String upstream = getRevid(launcher, listener, source);
- output.println(upstream);
- final BazaarRevisionState remote = (upstream == null) ? null : new BazaarRevisionState(upstream);
+ final BazaarRevisionState remote = getRevisionState(launcher, listener, source);
+ output.println(remote);
final Change change;
output.printf("Baseline is %s.\n", baseline);
if ((baseline == SCMRevisionState.NONE)
// appears that other instances of None occur - its not a singleton.
// so do a (fugly) class check.
|| (baseline.getClass() != BazaarRevisionState.class)
- || (!remote.rev_id.equals(((BazaarRevisionState)baseline).rev_id)))
+ || (!remote.equals(baseline)))
change = Change.SIGNIFICANT;
else
change = Change.NONE;
@@ -173,9 +172,9 @@ public class BazaarSCM extends SCM implements Serializable {
InterruptedException {
PrintStream output = listener.getLogger();
output.println("Getting local revision...");
- String local = getRevid(launcher, listener, build.getWorkspace().getRemote());
+ BazaarRevisionState local = getRevisionState(launcher, listener, build.getWorkspace().getRemote());
output.println(local);
- return local == null ? null : new BazaarRevisionState(local);
+ return local;
}
/** for old hudsons - delete at will **/
@@ -187,11 +186,11 @@ public class BazaarSCM extends SCM implements Serializable {
PrintStream output = listener.getLogger();
output.println("Getting upstream revision...");
- String upstream = getRevid(launcher, listener, source);
+ BazaarRevisionState upstream = getRevisionState(launcher, listener, source);
output.println(upstream);
output.println("Getting local revision...");
- String local = getRevid(launcher, listener, workspace.getRemote());
+ BazaarRevisionState local = getRevisionState(launcher, listener, workspace.getRemote());
output.println(local);
return ! upstream.equals(local);
@@ -223,7 +222,7 @@ public class BazaarSCM extends SCM implements Serializable {
FilePath workspace, BuildListener listener, File changelogFile)
throws InterruptedException, IOException {
try {
- String oldid = getRevid(launcher, listener, workspace.getRemote());
+ BazaarRevisionState oldRevisionState = getRevisionState(launcher, listener, workspace.getRemote());
if (launcher.launch().cmds(getDescriptor().getBzrExe(), "pull", "--overwrite", source)
.envs(build.getEnvironment(listener)).stdout(listener.getLogger()).pwd(workspace).join() != 0) {
@@ -231,8 +230,8 @@ public class BazaarSCM extends SCM implements Serializable {
return false;
}
- String newid = getRevid(launcher, listener, workspace.getRemote());
- getLog(launcher, workspace, oldid, newid, changelogFile);
+ BazaarRevisionState newRevisionState = getRevisionState(launcher, listener, workspace.getRemote());
+ getLog(launcher, workspace, oldRevisionState, newRevisionState, changelogFile);
} catch (IOException e) {
listener.error("Failed to pull");
@@ -270,7 +269,11 @@ public class BazaarSCM extends SCM implements Serializable {
}
@Override
- public void buildEnvVars(AbstractBuild build, Map env) {
+ public void buildEnvVars(AbstractBuild,?> build, Map env) {
+ BazaarRevisionState revisionState = (BazaarRevisionState) build.getAction(SCMRevisionState.class);
+ if (revisionState != null && revisionState.getRevNo() != null) {
+ env.put("BZR_REVISION", revisionState.getRevNo());
+ }
}
@Override