summary refs log tree commit diff stats
path: root/ranger/ext/vcs/bzr.py
diff options
context:
space:
mode:
Diffstat (limited to 'ranger/ext/vcs/bzr.py')
-rw-r--r--ranger/ext/vcs/bzr.py154
1 files changed, 6 insertions, 148 deletions
diff --git a/ranger/ext/vcs/bzr.py b/ranger/ext/vcs/bzr.py
index 7b870d7d..358db8ad 100644
--- a/ranger/ext/vcs/bzr.py
+++ b/ranger/ext/vcs/bzr.py
@@ -2,28 +2,25 @@
 
 import os
 import re
-import shutil
 from datetime import datetime
 
 from .vcs import Vcs, VcsError
 
-
 class Bzr(Vcs):
+    """VCS implementiation for Bzr"""
     HEAD="last:1"
 
-    # Auxiliar stuff
+    # Generic
     #---------------------------
 
     def _bzr(self, path, args, silent=True, catchout=False, bytes=False):
         return self._vcs(path, 'bzr', args, silent=silent, catchout=catchout, bytes=bytes)
 
-
     def _has_head(self):
         """Checks whether repo has head"""
         rnum = self._bzr(self.path, ['revno'], catchout=True)
         return rnum != '0'
 
-
     def _sanitize_rev(self, rev):
         if rev == None: return None
         rev = rev.strip()
@@ -31,7 +28,6 @@ class Bzr(Vcs):
 
         return rev
 
-
     def _log(self, refspec=None, filelist=None):
         """Gets a list of dicts containing revision info, for the revisions matching refspec"""
         args = ['log', '-n0', '--show-ids']
@@ -61,7 +57,6 @@ class Bzr(Vcs):
             log.append(dt)
         return log
 
-
     def _bzr_file_status(self, st):
         st = st.strip()
         if   st in "AM":     return 'staged'
@@ -69,76 +64,19 @@ class Bzr(Vcs):
         elif st in "?":      return 'untracked'
         else:                return 'unknown'
 
-
-
-    # Repo creation
-    #---------------------------
-
-    def init(self):
-        """Initializes a repo in current path"""
-        self._bzr(self.path, ['init'])
-        self.update()
-
-
-    def clone(self, src):
-        """Clones a repo from src"""
-        path = os.path.dirname(self.path)
-        name = os.path.basename(self.path)
-        try:
-            os.rmdir(self.path)
-        except OSError:
-            raise VcsError("Can't clone to %s. It is not an empty directory" % self.path)
-
-        self._bzr(path, ['branch', src, name])
-        self.update()
-
-
-
     # Action Interface
     #---------------------------
 
-    def commit(self, message):
-        """Commits with a given message"""
-        self._bzr(self.path, ['commit', '-m', message])
-
-
     def add(self, filelist=None):
         """Adds files to the index, preparing for commit"""
         if filelist != None: self._bzr(self.path, ['add'] + filelist)
         else:                self._bzr(self.path, ['add'])
 
-
     def reset(self, filelist=None):
         """Removes files from the index"""
         if filelist != None: self._bzr(self.path, ['remove', '--keep', '--new'] + filelist)
         else:                self._bzr(self.path, ['remove', '--keep', '--new'])
 
-
-    def pull(self):
-        """Pulls a git repo"""
-        self._bzr(self.path, ['pull'])
-
-
-    def push(self):
-        """Pushes a git repo"""
-        self._bzr(self.path, ['push'])
-
-
-    def checkout(self, rev):
-        """Checks out a branch or revision"""
-        self._bzr(self.path, ['update', '-r', rev])
-
-
-    def extract_file(self, rev, name, dest):
-        """Extracts a file from a given revision and stores it in dest dir"""
-        if rev == self.INDEX:
-            shutil.copyfile(os.path.join(self.path, name), dest)
-        else:
-            out = self._bzr(self.path, ['cat', '--r', rev, name], catchout=True, bytes=True)
-            with open(dest, 'wb') as fd: fd.write(out)
-
-
-
     # Data Interface
     #---------------------------
 
@@ -153,65 +91,7 @@ class Bzr(Vcs):
             ret[os.path.normpath(p.strip())] = sta
         return ret
 
-
-    def get_ignore_allfiles(self):
-        """Returns a set of all the ignored files in the repo. Strips trailing '/' from dirs."""
-        raw = self._bzr(self.path, ['ls', '--ignored'], catchout=True)
-        return set(os.path.normpath(p) for p in raw.split('\n'))
-
-
-    # TODO: slow due to net access
     def get_status_remote(self):
-        """Checks the status of the repo regarding sync state with remote branch"""
-        if self.get_remote() == None:
-            return "none"
-
-        ahead = behind = True
-        try:
-            self._bzr(self.path, ['missing', '--mine-only'], silent=True)
-        except:
-            ahead = False
-
-        try:
-            self._bzr(self.path, ['missing', '--theirs-only'], silent=True)
-        except:
-            behind = False
-
-        if       ahead and     behind: return "diverged"
-        elif     ahead and not behind: return "ahead"
-        elif not ahead and     behind: return "behind"
-        elif not ahead and not behind: return "sync"
-
-
-    def get_branch(self):
-        """Returns the current named branch, if this makes sense for the backend. None otherwise"""
-        branch = self._bzr(self.path, ['nick'], catchout=True)
-        return branch or None
-
-
-    def get_log(self, filelist=None, maxres=None):
-        """Get the entire log for the current HEAD"""
-        if not self._has_head(): return []
-        return self._log(refspec=None, filelist=filelist)
-
-
-    def get_raw_log(self, filelist=None):
-        """Gets the raw log as a string"""
-        if not self._has_head(): return []
-        args = ['log']
-        if filelist: args = args + filelist
-        return self._bzr(self.path, args, catchout=True)
-
-
-    def get_raw_diff(self, refspec=None, filelist=None):
-        """Gets the raw diff as a string"""
-        args = ['diff', '--git']
-        if refspec:  args = args + [refspec]
-        if filelist: args = args + filelist
-        return self._bzr(self.path, args, catchout=True)
-
-
-    def get_remote(self):
         """Returns the url for the remote repo attached to head"""
         try:
             remote = self._bzr(self.path, ['config', 'parent_location'], catchout=True)
@@ -220,19 +100,10 @@ class Bzr(Vcs):
 
         return remote.strip() or None
 
-
-    def get_revision_id(self, rev=None):
-        """Get a canonical key for the revision rev"""
-        if rev == None: rev = self.HEAD
-        elif rev == self.INDEX: return None
-        rev = self._sanitize_rev(rev)
-        try:
-            L = self._log(refspec=rev)
-        except VcsError:
-            L = []
-        if len(L) == 0: return None
-        else:           return L[0]['revid']
-
+    def get_branch(self):
+        """Returns the current named branch, if this makes sense for the backend. None otherwise"""
+        branch = self._bzr(self.path, ['nick'], catchout=True)
+        return branch or None
 
     def get_info(self, rev=None):
         """Gets info about the given revision rev"""
@@ -247,16 +118,3 @@ class Bzr(Vcs):
             raise VcsError("More than one instance of revision %s ?!?" % rev)
         else:
             return L[0]
-
-
-    def get_files(self, rev=None):
-        """Gets a list of files in revision rev"""
-        if rev == None: rev = self.HEAD
-        rev = self._sanitize_rev(rev)
-
-        if rev:
-            if rev == self.INDEX:  raw = self._bzr(self.path, ["ls"], catchout=True)
-            else:                  raw = self._bzr(self.path, ['ls', '--R', '-V', '-r', rev], catchout=True)
-            return raw.split('\n')
-        else:
-            return []