Changeset 7695


Ignore:
Timestamp:
Feb 21, 2010, 10:28:17 PM (14 years ago)
Author:
Herbert Valerio Riedel
Message:

created 0.12/ branch, tweaked setup.py, and applied patch by kevin.mcconnell@… (see #6554)

Location:
gitplugin/0.12
Files:
3 edited
1 copied

Legend:

Unmodified
Added
Removed
  • gitplugin/0.12/setup.py

    r5391 r7695  
    55setup(
    66    name='TracGit',
    7     install_requires='Trac ==0.11, ==0.11rc2, ==0.11rc1, ==0.11b2, ==0.11b1, >=0.11dev',
    8     description='GIT version control plugin for Trac 0.11',
     7    install_requires=[],#'Trac ==0.12',
     8    description='GIT version control plugin for Trac 0.12',
    99    author='Herbert Valerio Riedel',
    1010    author_email='hvr@gnu.org',
    1111    keywords='trac scm plugin git',
    1212    url="http://trac-hacks.org/wiki/GitPlugin",
    13     version='0.11.0.2',
     13    version='0.12.0.2',
    1414    license="GPL",
    1515    long_description="""
    16     This Trac 0.11 plugin provides support for the GIT SCM.
     16    This Trac 0.12 plugin provides support for the GIT SCM.
    1717
    1818    See http://trac-hacks.org/wiki/GitPlugin for more details.
  • gitplugin/0.12/tracext/git/PyGIT.py

    r6442 r7695  
    506506            raise GitError("read_commit called with empty commit_id")
    507507
    508         commit_id = str(commit_id)
     508        commit_id = self.fullrev(commit_id)
    509509
    510510        db = self.get_commits()
  • gitplugin/0.12/tracext/git/git_fs.py

    r6442 r7695  
    2727        def short_rev(self, path):
    2828                return self.repos.short_rev(path)
     29        def normalize_rev(self, rev):
     30                if not rev:
     31                        return self.repos.get_youngest_rev()
     32                normrev=self.repos.git.verifyrev(rev)
     33                if normrev is None:
     34                        raise NoSuchChangeset(rev)
     35                return normrev
     36
    2937
    3038from genshi.builder import tag
     
    144152                yield ("git", 8)
    145153
    146         def get_repository(self, type, dir, authname):
     154        def get_repository(self, type, dir, params):
    147155                """GitRepository factory method"""
    148156                assert type == "git"
     
    154162                                        (self._version['v_str'], self._version['v_min_str']))
    155163
    156                 repos = GitRepository(dir, self.log,
     164                repos = GitRepository(dir, params, self.log,
    157165                                      persistent_cache=self._persistent_cache,
    158166                                      git_bin=self._git_bin,
     
    160168
    161169                if self._cached_repository:
    162                         repos = CachedRepository2(self.env.get_db_cnx(), repos, None, self.log)
     170                        repos = CachedRepository2(self.env, repos, self.log)
    163171                        self.log.info("enabled CachedRepository for '%s'" % dir)
    164172                else:
     
    168176
    169177class GitRepository(Repository):
    170         def __init__(self, path, log, persistent_cache=False, git_bin='git', shortrev_len=7):
     178        def __init__(self, path, params, log, persistent_cache=False,
     179                        git_bin='git', shortrev_len=7):
    171180                self.logger = log
    172181                self.gitrepo = path
     182                self.params = params
    173183                self._shortrev_len = max(4, min(shortrev_len, 40))
    174184
    175185                self.git = PyGIT.StorageFactory(path, log, not persistent_cache,
    176186                                                git_bin=git_bin).getInstance()
    177                 Repository.__init__(self, "git:"+path, None, log)
     187                Repository.__init__(self, "git:"+path, self.params, log)
    178188
    179189        def close(self):
     
    207217
    208218        def get_node(self, path, rev=None):
    209                 return GitNode(self.git, path, rev, self.log)
     219                return GitNode(self, path, rev, self.log)
    210220
    211221        def get_quickjump_entries(self, rev):
     
    221231        def get_changeset(self, rev):
    222232                """GitChangeset factory method"""
    223                 return GitChangeset(self.git, rev)
     233                return GitChangeset(self, rev)
    224234
    225235        def get_changes(self, old_path, old_rev, new_path, new_rev, ignore_ancestry=0):
     
    260270                self.sync()
    261271
    262         def sync(self, rev_callback=None):
     272        def sync(self, rev_callback=None, clean=None):
    263273                if rev_callback:
    264274                        revs = set(self.git.all_revs())
     
    273283
    274284class GitNode(Node):
    275         def __init__(self, git, path, rev, log, ls_tree_info=None):
     285        def __init__(self, repos, path, rev, log, ls_tree_info=None):
    276286                self.log = log
    277                 self.git = git
     287                self.repos = repos
    278288                self.fs_sha = None # points to either tree or blobs
    279289                self.fs_perm = None
     
    285295                if p: # ie. not the root-tree
    286296                        if not ls_tree_info:
    287                                 ls_tree_info = git.ls_tree(rev, p) or None
     297                                ls_tree_info = repos.git.ls_tree(rev, p) or None
    288298                                if ls_tree_info:
    289299                                        [ls_tree_info] = ls_tree_info
     
    295305
    296306                        # fix-up to the last commit-rev that touched this node
    297                         rev = self.git.last_change(rev, p)
     307                        rev = repos.git.last_change(rev, p)
    298308
    299309                        if k=='tree':
     
    307317                self.created_rev = rev
    308318
    309                 Node.__init__(self, path, rev, kind)
     319                Node.__init__(self, repos, path, rev, kind)
    310320
    311321        def __git_path(self):
     
    324334                        return None
    325335
    326                 return self.git.get_file(self.fs_sha)
     336                return self.repos.git.get_file(self.fs_sha)
    327337
    328338        def get_properties(self):
     
    333343                        return
    334344
    335                 return [ rev for (rev,lineno) in self.git.blame(self.rev, self.__git_path()) ]
     345                return [ rev for (rev,lineno) in self.repos.git.blame(self.rev, self.__git_path()) ]
    336346
    337347        def get_entries(self):
     
    339349                        return
    340350
    341                 for ent in self.git.ls_tree(self.rev, self.__git_path()):
    342                         yield GitNode(self.git, ent[-1], self.rev, self.log, ent)
     351                for ent in self.repos.git.ls_tree(self.rev, self.__git_path()):
     352                        yield GitNode(self.repos, ent[-1], self.rev, self.log, ent)
    343353
    344354        def get_content_type(self):
     
    353363
    354364                if self.fs_size is None:
    355                         self.fs_size = self.git.get_obj_size(self.fs_sha)
     365                        self.fs_size = self.repos.git.get_obj_size(self.fs_sha)
    356366
    357367                return self.fs_size
     
    359369        def get_history(self, limit=None):
    360370                # TODO: find a way to follow renames/copies
    361                 for is_last,rev in _last_iterable(self.git.history(self.rev, self.__git_path(), limit)):
     371                for is_last,rev in _last_iterable(self.repos.git.history(self.rev, self.__git_path(), limit)):
    362372                        yield (self.path, rev, Changeset.EDIT if not is_last else Changeset.ADD)
    363373
     
    367377
    368378                try:
    369                         msg, props = self.git.read_commit(self.rev)
     379                        msg, props = self.repos.git.read_commit(self.rev)
    370380                        user,ts = _parse_user_time(props['committer'][0])
    371381                except:
     
    386396                } # TODO: U, X, B
    387397
    388         def __init__(self, git, sha):
    389                 self.git = git
     398        def __init__(self, repos, sha):
     399                self.repos = repos
    390400                try:
    391                         (msg, props) = git.read_commit(sha)
     401                        (msg, props) = repos.git.read_commit(sha)
    392402                except PyGIT.GitErrorSha:
    393403                        raise NoSuchChangeset(sha)
     
    395405
    396406                assert 'children' not in props
    397                 _children = list(git.children(sha))
     407                _children = list(repos.git.children(sha))
    398408                if _children:
    399409                        props['children'] = _children
     
    402412                (user_, time_) = _parse_user_time(props['committer'][0])
    403413
    404                 Changeset.__init__(self, sha, msg, user_, time_)
     414                Changeset.__init__(self, repos, sha, msg, user_, time_)
    405415
    406416        def get_properties(self):
     
    424434                for parent in self.props.get('parent', [None]):
    425435                        for mode1,mode2,obj1,obj2,action,path1,path2 in \
    426                                     self.git.diff_tree(parent, self.rev, find_renames=True):
     436                                    self.repos.git.diff_tree(parent, self.rev, find_renames=True):
    427437                                path = path2 or path1
    428438                                p_path, p_rev = path1, parent
Note: See TracChangeset for help on using the changeset viewer.