forked from jenkinsci/git-plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Revert once more jgit version. The mainline *still doesn't have these…
… changes* without which master/slave support will break horribly. git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/plugins/git@17919 71c3de6d-444a-0410-be80-ed276b4c234a
- Loading branch information
magnayn
committed
May 11, 2009
1 parent
07e690b
commit 0f56dae
Showing
28 changed files
with
1,639 additions
and
160 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
This version of the git plugin needs a patched version of JGit to support various items being Serializable. | ||
|
||
If you just use any old 0.4-SNAPSHOT, until the patches are merged, things may not work (and master/slave definitely won't work). | ||
|
||
The patched version is in the maven-repository subdirectory. It's also available at | ||
https://guest:[email protected]/svn/hudson/trunk/hudson/plugins/git/maven-repository | ||
|
||
But - maven doesn't seem to want to pass the guest credentials - hence the slightly hackish raw fisheye URL: | ||
http://fisheye4.atlassian.com/browse/~raw,r=trunk/hudson/trunk/hudson/plugins/git/maven-repository | ||
|
||
If you wish to post-patch a (newer) version of JGit (newer than fedd114bc) then the patches are in jgit-patches. They have been | ||
submitted to the JGit maintainer. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,336 @@ | ||
From 8710ee806c047593abaeabfac20d758d4f0de7a9 Mon Sep 17 00:00:00 2001 | ||
From: Nigel Magnay <[email protected]> | ||
Date: Mon, 16 Feb 2009 20:03:22 +0000 | ||
Subject: [PATCH] asdf | ||
Signed-off-by: Nigel Magnay <[email protected]> | ||
|
||
--- | ||
.../src/org/spearce/jgit/lib/ObjectId.java | 22 +++++- | ||
.../src/org/spearce/jgit/transport/RefSpec.java | 77 +++++++++++++------ | ||
.../org/spearce/jgit/transport/RemoteConfig.java | 79 +++++++++++++++++++- | ||
.../src/org/spearce/jgit/transport/URIish.java | 29 +++++++- | ||
4 files changed, 179 insertions(+), 28 deletions(-) | ||
|
||
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectId.java b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectId.java | ||
index 52ce0d4..7c3b922 100644 | ||
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectId.java | ||
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectId.java | ||
@@ -38,6 +38,10 @@ | ||
|
||
package org.spearce.jgit.lib; | ||
|
||
+import java.io.IOException; | ||
+import java.io.ObjectInputStream; | ||
+import java.io.ObjectOutputStream; | ||
+import java.io.Serializable; | ||
import java.io.UnsupportedEncodingException; | ||
|
||
import org.spearce.jgit.util.NB; | ||
@@ -45,7 +49,7 @@ | ||
/** | ||
* A SHA-1 abstraction. | ||
*/ | ||
-public class ObjectId extends AnyObjectId { | ||
+public class ObjectId extends AnyObjectId implements Serializable { | ||
private static final ObjectId ZEROID; | ||
|
||
private static final String ZEROID_STR; | ||
@@ -269,4 +273,20 @@ protected ObjectId(final AnyObjectId src) { | ||
public ObjectId toObjectId() { | ||
return this; | ||
} | ||
+ | ||
+ private void writeObject(ObjectOutputStream os) throws IOException { | ||
+ os.writeInt(w1); | ||
+ os.writeInt(w2); | ||
+ os.writeInt(w3); | ||
+ os.writeInt(w4); | ||
+ os.writeInt(w5); | ||
+ } | ||
+ | ||
+ private void readObject(ObjectInputStream ois) throws IOException { | ||
+ w1 = ois.readInt(); | ||
+ w2 = ois.readInt(); | ||
+ w3 = ois.readInt(); | ||
+ w4 = ois.readInt(); | ||
+ w5 = ois.readInt(); | ||
+ } | ||
} | ||
diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/RefSpec.java b/org.spearce.jgit/src/org/spearce/jgit/transport/RefSpec.java | ||
index 521110b..0ee89b0 100644 | ||
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/RefSpec.java | ||
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/RefSpec.java | ||
@@ -37,6 +37,11 @@ | ||
|
||
package org.spearce.jgit.transport; | ||
|
||
+import java.io.Externalizable; | ||
+import java.io.IOException; | ||
+import java.io.ObjectInput; | ||
+import java.io.ObjectOutput; | ||
+ | ||
import org.spearce.jgit.lib.Constants; | ||
import org.spearce.jgit.lib.Ref; | ||
|
||
@@ -46,7 +51,7 @@ | ||
* A ref specification provides matching support and limited rules to rewrite a | ||
* reference in one repository to another reference in another repository. | ||
*/ | ||
-public class RefSpec { | ||
+public class RefSpec implements Externalizable { | ||
/** | ||
* Suffix for wildcard ref spec component, that indicate matching all refs | ||
* with specified prefix. | ||
@@ -109,30 +114,7 @@ public RefSpec() { | ||
* the specification is invalid. | ||
*/ | ||
public RefSpec(final String spec) { | ||
- String s = spec; | ||
- if (s.startsWith("+")) { | ||
- force = true; | ||
- s = s.substring(1); | ||
- } | ||
- | ||
- final int c = s.indexOf(':'); | ||
- if (c == 0) { | ||
- s = s.substring(1); | ||
- if (isWildcard(s)) | ||
- throw new IllegalArgumentException("Invalid wildcards " + spec); | ||
- dstName = s; | ||
- } else if (c > 0) { | ||
- srcName = s.substring(0, c); | ||
- dstName = s.substring(c + 1); | ||
- if (isWildcard(srcName) && isWildcard(dstName)) | ||
- wildcard = true; | ||
- else if (isWildcard(srcName) || isWildcard(dstName)) | ||
- throw new IllegalArgumentException("Invalid wildcards " + spec); | ||
- } else { | ||
- if (isWildcard(s)) | ||
- throw new IllegalArgumentException("Invalid wildcards " + spec); | ||
- srcName = s; | ||
- } | ||
+ initializeFromString(spec); | ||
} | ||
|
||
/** | ||
@@ -161,6 +143,42 @@ private RefSpec(final RefSpec p) { | ||
} | ||
|
||
/** | ||
+ * Initialize the ref specification from a string. | ||
+ * | ||
+ * @param spec | ||
+ * string describing the specification. | ||
+ * @throws IllegalArgumentException | ||
+ * the specification is invalid. | ||
+ */ | ||
+ private void initializeFromString(final String spec) { | ||
+ srcName = null; | ||
+ String s = spec; | ||
+ if (s.startsWith("+")) { | ||
+ force = true; | ||
+ s = s.substring(1); | ||
+ } | ||
+ | ||
+ final int c = s.indexOf(':'); | ||
+ if (c == 0) { | ||
+ s = s.substring(1); | ||
+ if (isWildcard(s)) | ||
+ throw new IllegalArgumentException("Invalid wildcards " + spec); | ||
+ dstName = s; | ||
+ } else if (c > 0) { | ||
+ srcName = s.substring(0, c); | ||
+ dstName = s.substring(c + 1); | ||
+ if (isWildcard(srcName) && isWildcard(dstName)) | ||
+ wildcard = true; | ||
+ else if (isWildcard(srcName) || isWildcard(dstName)) | ||
+ throw new IllegalArgumentException("Invalid wildcards " + spec); | ||
+ } else { | ||
+ if (isWildcard(s)) | ||
+ throw new IllegalArgumentException("Invalid wildcards " + spec); | ||
+ srcName = s; | ||
+ } | ||
+ } | ||
+ | ||
+ /** | ||
* Check if this specification wants to forcefully update the destination. | ||
* | ||
* @return true if this specification asks for updates without merge tests. | ||
@@ -421,4 +439,13 @@ public String toString() { | ||
} | ||
return r.toString(); | ||
} | ||
+ | ||
+ public void readExternal(ObjectInput in) throws IOException, | ||
+ ClassNotFoundException { | ||
+ initializeFromString(in.readUTF()); | ||
+ } | ||
+ | ||
+ public void writeExternal(ObjectOutput out) throws IOException { | ||
+ out.writeUTF(toString()); | ||
+ } | ||
} | ||
diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteConfig.java b/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteConfig.java | ||
index 5bbf664..899f73f 100644 | ||
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteConfig.java | ||
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteConfig.java | ||
@@ -38,6 +38,10 @@ | ||
|
||
package org.spearce.jgit.transport; | ||
|
||
+import java.io.IOException; | ||
+import java.io.ObjectInputStream; | ||
+import java.io.ObjectOutputStream; | ||
+import java.io.Serializable; | ||
import java.net.URISyntaxException; | ||
import java.util.ArrayList; | ||
import java.util.Collections; | ||
@@ -53,7 +57,7 @@ | ||
* describing how refs should be transferred between this repository and the | ||
* remote repository. | ||
*/ | ||
-public class RemoteConfig { | ||
+public class RemoteConfig implements Serializable { | ||
private static final String SECTION = "remote"; | ||
|
||
private static final String KEY_URL = "url"; | ||
@@ -382,4 +386,77 @@ public TagOpt getTagOpt() { | ||
public void setTagOpt(final TagOpt option) { | ||
tagopt = option != null ? option : TagOpt.AUTO_FOLLOW; | ||
} | ||
+ | ||
+ private void writeObject(ObjectOutputStream os) throws IOException { | ||
+ | ||
+ // Name | ||
+ os.writeUTF(name); | ||
+ | ||
+ // Key, Value pairs | ||
+ for (URIish uri : uris) { | ||
+ os.writeUTF(KEY_URL); | ||
+ os.writeUTF(uri.toPrivateString()); | ||
+ } | ||
+ | ||
+ for (RefSpec refspec : fetch) { | ||
+ os.writeUTF(KEY_FETCH); | ||
+ os.writeUTF(refspec.toString()); | ||
+ } | ||
+ | ||
+ for (RefSpec refspec : push) { | ||
+ os.writeUTF(KEY_PUSH); | ||
+ os.writeUTF(refspec.toString()); | ||
+ } | ||
+ | ||
+ os.writeUTF(KEY_UPLOADPACK); | ||
+ os.writeUTF(uploadpack); | ||
+ | ||
+ os.writeUTF(KEY_RECEIVEPACK); | ||
+ os.writeUTF(receivepack); | ||
+ | ||
+ os.writeUTF(KEY_TAGOPT); | ||
+ os.writeUTF(tagopt.option()); | ||
+ | ||
+ // End marker | ||
+ os.writeUTF(""); | ||
+ } | ||
+ | ||
+ private void readObject(ObjectInputStream ois) throws IOException { | ||
+ uris = new ArrayList<URIish>(); | ||
+ fetch = new ArrayList<RefSpec>(); | ||
+ push = new ArrayList<RefSpec>(); | ||
+ uploadpack = DEFAULT_UPLOAD_PACK; | ||
+ receivepack = DEFAULT_RECEIVE_PACK; | ||
+ | ||
+ name = ois.readUTF(); | ||
+ | ||
+ for (String key = ois.readUTF(); key.length() > 0; key = ois.readUTF()) { | ||
+ String value = ois.readUTF(); | ||
+ | ||
+ if (key.equals(KEY_URL)) { | ||
+ try { | ||
+ uris.add(new URIish(value)); | ||
+ } catch (URISyntaxException e) { | ||
+ throw new IOException("Invalid URI in RemoteConfig : " | ||
+ + value); | ||
+ } | ||
+ } else if (key.equals(KEY_FETCH)) { | ||
+ fetch.add(new RefSpec(value)); | ||
+ | ||
+ } else if (key.equals(KEY_PUSH)) { | ||
+ push.add(new RefSpec(value)); | ||
+ | ||
+ } else if (key.equals(KEY_UPLOADPACK)) { | ||
+ uploadpack = value; | ||
+ | ||
+ } else if (key.equals(KEY_RECEIVEPACK)) { | ||
+ receivepack = value; | ||
+ | ||
+ } else if (key.equals(KEY_TAGOPT)) { | ||
+ tagopt = TagOpt.fromOption(value); | ||
+ } | ||
+ | ||
+ } | ||
+ | ||
+ } | ||
} | ||
diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/URIish.java b/org.spearce.jgit/src/org/spearce/jgit/transport/URIish.java | ||
index b86e00c..6b85f45 100644 | ||
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/URIish.java | ||
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/URIish.java | ||
@@ -38,6 +38,10 @@ | ||
|
||
package org.spearce.jgit.transport; | ||
|
||
+import java.io.Externalizable; | ||
+import java.io.IOException; | ||
+import java.io.ObjectInput; | ||
+import java.io.ObjectOutput; | ||
import java.net.URISyntaxException; | ||
import java.net.URL; | ||
import java.util.regex.Matcher; | ||
@@ -49,7 +53,7 @@ | ||
* RFC 2396 URI's is that no URI encoding/decoding ever takes place. A space or | ||
* any special character is written as-is. | ||
*/ | ||
-public class URIish { | ||
+public class URIish implements Externalizable { | ||
private static final Pattern FULL_URI = Pattern | ||
.compile("^(?:([a-z][a-z0-9+-]+)://(?:([^/]+?)(?::([^/]+?))?@)?(?:([^/]+?))?(?::(\\d+))?)?((?:[A-Za-z]:)?/.+)$"); | ||
|
||
@@ -75,6 +79,16 @@ | ||
* @throws URISyntaxException | ||
*/ | ||
public URIish(String s) throws URISyntaxException { | ||
+ initializeFromString(s); | ||
+ } | ||
+ | ||
+ /** | ||
+ * Set fields from string based URI. | ||
+ * | ||
+ * @param s | ||
+ * @throws URISyntaxException | ||
+ */ | ||
+ private void initializeFromString(String s) throws URISyntaxException { | ||
s = s.replace('\\', '/'); | ||
Matcher matcher = FULL_URI.matcher(s); | ||
if (matcher.matches()) { | ||
@@ -357,4 +371,17 @@ private String format(final boolean includePassword) { | ||
|
||
return r.toString(); | ||
} | ||
+ | ||
+ public void readExternal(ObjectInput in) throws IOException, | ||
+ ClassNotFoundException { | ||
+ try { | ||
+ initializeFromString(in.readUTF()); | ||
+ } catch (URISyntaxException e) { | ||
+ throw new IOException("Incorrect format URI"); | ||
+ } | ||
+ } | ||
+ | ||
+ public void writeExternal(ObjectOutput out) throws IOException { | ||
+ out.writeUTF(format(true)); | ||
+ } | ||
} | ||
-- | ||
1.6.0.2 | ||
|
Oops, something went wrong.