Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 632)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 633)
@@ -85,4 +85,5 @@
 			osm.user = user;
 			osm.visible = visible;
+			osm.version = version;
 			osm.checkTagged();
                         osm.checkDirectionTagged();
@@ -249,4 +250,20 @@
 		if (visible != null) {
 			current.visible = Boolean.parseBoolean(visible);
+		}
+
+		// oldversion attribute added in 0.6 API
+
+		// Note there is an asymmetry here: the server will send
+		// the version as "version" the client sends it as
+		// "oldversion". So we take both since which we receive will
+		// depend on reading from a file or reading from the server
+
+		String version = atts.getValue("version");
+		if (version != null) {
+			current.version = Integer.parseInt(version);
+		}
+		version = atts.getValue("old_version");
+		if (version != null) {
+			current.version = Integer.parseInt(version);
 		}
 
Index: trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 632)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 633)
@@ -149,5 +149,5 @@
 		Main.pleaseWaitDlg.currentAction.setText(tr("Opening changeset..."));
 		changeset = new Changeset();
-		changeset.put( "created_by", "josm" );
+		changeset.put( "created_by", "JOSM" );
 		changeset.put( "comment", comment );
 		try {
@@ -303,8 +303,5 @@
 	 */
 	public void visit(Node n) {
-		if (n.id == 0 && !n.deleted && n.get("created_by") == null) {
-			n.put("created_by", "JOSM");
-			sendRequest("PUT", "node", n, true);
-		} else if (n.deleted) {
+		if (n.deleted) {
 			sendRequest("DELETE", "node", n, true);
 		} else {
@@ -318,8 +315,5 @@
 	 */
 	public void visit(Way w) {
-		if (w.id == 0 && !w.deleted && w.get("created_by") == null) {
-			w.put("created_by", "JOSM");
-			sendRequest("PUT", "way", w, true);
-		} else if (w.deleted) {
+		if (w.deleted) {
 			sendRequest("DELETE", "way", w, true);
 		} else {
@@ -333,8 +327,5 @@
 	 */
 	public void visit(Relation e) {
-		if (e.id == 0 && !e.deleted && e.get("created_by") == null) {
-			e.put("created_by", "JOSM");
-			sendRequest("PUT", "relation", e, true);
-		} else if (e.deleted) {
+		if (e.deleted) {
 			sendRequest("DELETE", "relation", e, true);
 		} else {
@@ -398,5 +389,8 @@
 			if (retCode == 200)
 				if(osm.id == 0)
+				{
 					osm.id = readId(activeConnection.getInputStream());
+					osm.version = 1;
+				}
 				else
 				{
