Changeset 3275
- Timestamp:
- 02/26/08 14:59:03 (6 months ago)
- Files:
-
- gitplugin/0.11/tracext/git/git_fs.py (modified) (6 diffs)
- gitplugin/0.11/tracext/git/PyGIT.py (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gitplugin/0.11/tracext/git/git_fs.py
r3270 r3275 21 21 from trac.versioncontrol.cache import CachedRepository 22 22 from trac.versioncontrol.web_ui import IPropertyRenderer 23 from trac.config import BoolOption, IntOption 23 from trac.config import BoolOption, IntOption, PathOption, Option 24 24 25 25 # for some reason CachedRepository doesn't pass-through short_rev()s … … 64 64 65 65 try: 66 self._version = PyGIT.Storage.git_version( )66 self._version = PyGIT.Storage.git_version(git_bin=self._git_bin) 67 67 except PyGIT.GitError, e: 68 68 self.log.error("GitError: "+e.message) … … 135 135 136 136 _shortrev_len = IntOption('git', 'shortrev_len', 7, 137 "length rev sha sums should be tried to abbreviated to"137 "length rev sha sums should be tried to be abbreviated to" 138 138 " (must be >= 4 and <= 40)") 139 140 _git_bin = PathOption('git', 'git_bin', 'git', "file name of git executable") 141 139 142 140 143 def get_supported_types(self): … … 153 156 repos = GitRepository(dir, self.log, 154 157 persistent_cache=self._persistent_cache, 158 git_bin=self._git_bin, 155 159 shortrev_len=self._shortrev_len) 156 160 … … 164 168 165 169 class GitRepository(Repository): 166 def __init__(self, path, log, persistent_cache=False, shortrev_len=7):170 def __init__(self, path, log, persistent_cache=False, git_bin='git', shortrev_len=7): 167 171 self.logger = log 168 172 self.gitrepo = path 169 173 self._shortrev_len = max(4, min(shortrev_len, 40)) 170 174 171 self.git = PyGIT.StorageFactory(path, log, not persistent_cache).getInstance() 175 self.git = PyGIT.StorageFactory(path, log, not persistent_cache, 176 git_bin=git_bin).getInstance() 172 177 Repository.__init__(self, "git:"+path, None, log) 173 178 … … 191 196 192 197 def normalize_rev(self, rev): 193 if not rev or rev=='None':198 if not rev: 194 199 return self.get_youngest_rev() 195 200 normrev=self.git.verifyrev(rev) gitplugin/0.11/tracext/git/PyGIT.py
r3268 r3275 93 93 __dict_lock = Lock() 94 94 95 def __init__(self, repo, log, weak=True ):95 def __init__(self, repo, log, weak=True, git_bin='git'): 96 96 self.logger = log 97 97 … … 100 100 i = StorageFactory.__dict[repo] 101 101 except KeyError: 102 i = Storage(repo, log )102 i = Storage(repo, log, git_bin) 103 103 StorageFactory.__dict[repo] = i 104 104 … … 133 133 134 134 @staticmethod 135 def git_version( ):135 def git_version(git_bin="git"): 136 136 GIT_VERSION_MIN_REQUIRED = (1,5,2) 137 137 try: 138 g = GitCore( )138 g = GitCore(git_bin=git_bin) 139 139 output = g.version() 140 140 [v] = output.readlines() 141 [a,b,version] = v.strip().split() 142 split_version = tuple(map(int, version.split('.'))) 141 _,_,version = v.strip().split() 142 # 'version' has usually at least 3 numeric version components, e.g.:: 143 # 1.5.4.2 144 # 1.5.4.3.230.g2db511 145 # 1.5.4.GIT 146 147 def try_int(s): 148 try: 149 return int(s) 150 except ValueError: 151 return s 152 153 split_version = tuple(map(try_int, version.split('.'))) 143 154 144 155 result = {} … … 152 163 raise GitError("Could not retrieve GIT version") 153 164 154 def __init__(self, git_dir, log ):165 def __init__(self, git_dir, log, git_bin='git'): 155 166 self.logger = log 156 167 … … 168 179 self.logger.debug("PyGIT.Storage instance %d constructed" % id(self)) 169 180 170 self.repo = GitCore(git_dir )181 self.repo = GitCore(git_dir, git_bin=git_bin) 171 182 172 183 self.commit_encoding = None … … 227 238 return __rev_seen.setdefault(rev, rev) 228 239 229 ord_rev = 0240 rev = ord_rev = 0 230 241 for revs in self.repo.rev_list("--parents", "--all").readlines(): 231 242 revs = revs.strip().split() … … 430 441 return None 431 442 432 srevs = sdb[self.__rev_key(srev)] 443 try: 444 srevs = sdb[self.__rev_key(srev)] 445 except KeyError: 446 return None 433 447 434 448 srevs = filter(lambda s: s.startswith(srev), srevs)
