src/Pure/Admin/build_history.scala
changeset 64348 4c253e84ae62
parent 64346 5f49765a25ec
child 64353 8f628de5108b
--- a/src/Pure/Admin/build_history.scala	Sat Oct 22 19:14:38 2016 +0200
+++ b/src/Pure/Admin/build_history.scala	Sat Oct 22 19:57:56 2016 +0200
@@ -373,6 +373,7 @@
     isabelle_repos_other: Path,
     isabelle_repos_source: String = "http://isabelle.in.tum.de/repos/isabelle",
     self_update: Boolean = false,
+    push_isabelle_home: Boolean = false,
     progress: Progress = Ignore_Progress,
     progress_result: (String, Bytes) => Unit = (log_name: String, bytes: Bytes) => (),
     options: String = "",
@@ -387,13 +388,24 @@
       Mercurial.setup_repository(isabelle_repos_source, isabelle_repos_self, ssh = Some(ssh))
 
     if (self_update) {
-      isabelle_hg.pull()
-      isabelle_hg.update(clean = true)
+      if (push_isabelle_home) {
+        val isabelle_home_hg = Mercurial.repository(Path.explode("~~"))
+        val rev = isabelle_home_hg.id()
+        isabelle_home_hg.push(isabelle_hg.root_url, rev = rev, force = true)
+        isabelle_hg.update(rev = rev, clean = true)
+      }
+      else {
+        isabelle_hg.pull()
+        isabelle_hg.update(clean = true)
+      }
       ssh.execute(ssh.bash_path(isabelle_admin + Path.explode("build")) + " jars_fresh").check
     }
 
-    Mercurial.setup_repository(
-      ssh.bash_path(isabelle_repos_self), isabelle_repos_other, ssh = Some(ssh))
+    val other_hg =
+      Mercurial.setup_repository(
+        ssh.bash_path(isabelle_repos_self), isabelle_repos_other, ssh = Some(ssh))
+    other_hg.pull(isabelle_hg.root.implode)
+    other_hg.update(rev = isabelle_hg.id(), clean = true)
 
 
     /* Admin/build_history */