fa26fa1c32e3 — cedricbonhomme 12 years ago
Now using the default Python Mercurial high level interface.
1 files changed, 16 insertions(+), 23 deletions(-)

M hgsync.py
M hgsync.py +16 -23
@@ 30,19 30,8 @@ 
 import time
 import threading
 
-from subprocess import *
-
-def execute_command(cmd):
-    """
-    Execute a command and print the standard and error outputs.
-    """
-    try:
-        p = Popen(cmd, shell=True, bufsize=1024, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
-        (child_stdin, child_stdout, child_stderr) = (p.stdin, p.stdout, p.stderr)
-        print child_stderr.read()
-        print child_stdout.read()
-    except Exception, e:
-        print e
+from mercurial import commands
+from mercurial import ui, hg
 
 
 class HgSync(object):

          
@@ 52,6 41,7 @@ class HgSync(object):
     def __init__(self, repository_url, local_url, username):
         """
         """
+        self.repository_name = repository_name
         self.repository_url = repository_url
         self.local_url = local_url
         self.username = username

          
@@ 79,19 69,23 @@ class HgSync(object):
         """
         Initialize a new repository.
         """
-        self.repo = git.Repo.init(self.repository)
+        self.repo = hg.repository(ui.ui(), self.local_url)
 
     def clone(self):
         """
         Clone an existing repository.
         """
-        execute_command("hg clone " + self.repository_url)
+        try:
+            commands.clone(ui.ui(), self.repository_url, self.repository_name)
+        except Exception, e:
+            print e
 
     def commit(self, message):
         """
         """
         self.locker.acquire()
-        execute_command("cd " + self.local_url + "; hg commit -u " + self.username + " -m '" + message + "'")
+        commands.commit(self.repo.ui, self.repo)
+        commands.commit(self.repo.ui, self.repo, user=self.username , message=message, addremove=True)
         self.nb_commit += 1
         self.locker.release()
 

          
@@ 99,21 93,20 @@ class HgSync(object):
         """
         Add new_file to the list of tracked files.
         """
-        execute_command("cd " + self.local_url + "; hg add " + new_file)
+        commands.add(self.repo.ui, self.repo, new_file)
         self.commit("Added " + new_file)
 
     def modify(self, the_file):
         """
         Modify a file.
         """
-        execute_command("cd " + self.local_url + "; hg commit -u " + self.username + " -m 'Updated " + the_file + "'")
         self.commit("Updated " + the_file)
 
     def remove(self, file_to_remove):
         """
         Remove a file.
         """
-        execute_command("cd " + self.local_url + "; hg remove " + file_to_remove)
+        commands.remove(self.repo.ui, file_to_remove)
         self.commit("Removed " + file_to_remove)
 
     def rename(self, file_from, file_to):

          
@@ 131,14 124,14 @@ class HgSync(object):
         while True:
             time.sleep(1)
             if self.nb_commit == 5:
-                execute_command("cd " + self.local_url + "; hg push")
+                commands.push(self.repo.ui, repo)
                 self.nb_commit = 0
 
     def push(self):
         """
         Push changes and set the number of commits to zero.
         """
-        execute_command("cd " + self.local_url + "; hg push")
+        commands.push(self.repo.ui, repo)
         self.nb_commit = 0
 
     def pull_loop(self):

          
@@ 146,8 139,8 @@ class HgSync(object):
         Pull from the remote repository.
         """
         while True:
-            execute_command("cd " + self.local_url + "; hg pull")
-            execute_command("cd " + self.local_url + "; hg update")
+            commands.push(self.repo.ui, repo)
+            commands.update(self.repo.ui, repo)
             time.sleep(240)