Changeset 13908
- Timestamp:
- May 6, 2014, 6:09:24 PM (10 years ago)
- Location:
- tracpygit2plugin/trunk/tracext/pygit2
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
tracpygit2plugin/trunk/tracext/pygit2/git_fs.py
r13872 r13908 69 69 'GitRepository', 'GitChangeset', 'GitNode'] 70 70 71 GIT_DELTA_ADDED = 'A' 72 GIT_DELTA_DELETED = 'D' 73 GIT_DELTA_MODIFIED = 'M' 74 GIT_DELTA_RENAMED = 'R' 75 GIT_DELTA_COPIED = 'C' 76 SUBMODULE_FILEMODE = 0160000 71 77 72 78 if pygit2: 73 GIT_DELTA_ADDED = 'A'74 GIT_DELTA_DELETED = 'D'75 GIT_DELTA_MODIFIED = 'M'76 GIT_DELTA_RENAMED = 'R'77 GIT_DELTA_COPIED = 'C'78 79 _DELTA_STATUS_MAP = { 79 80 GIT_DELTA_ADDED: Changeset.ADD, … … 83 84 GIT_DELTA_COPIED: Changeset.COPY, 84 85 } 86 if hasattr(pygit2.TreeEntry, 'filemode'): 87 _get_filemode = lambda tree_entry: tree_entry.filemode 88 else: 89 _get_filemode = lambda tree_entry: tree_entry.attributes 85 90 else: 86 91 _DELTA_STATUS_MAP = {} 92 _get_filemode = None 87 93 88 94 … … 945 951 946 952 tree_entry = None 953 filemode = None 954 tree = None 955 blob = None 947 956 if commit: 948 957 normrev = commit.hex … … 952 961 if tree_entry is None: 953 962 raise NoSuchNode(path, rev) 954 git_object = repos.git_repos.get(tree_entry.oid) 955 if git_object.type == GIT_OBJ_TREE: 963 filemode = _get_filemode(tree_entry) 964 if filemode == SUBMODULE_FILEMODE: 965 git_object = None 966 else: 967 git_object = repos.git_repos.get(tree_entry.oid) 968 if git_object is None: 969 if filemode == SUBMODULE_FILEMODE: 970 kind = Node.DIRECTORY 971 else: 972 kind = None 973 elif git_object.type == GIT_OBJ_TREE: 956 974 kind = Node.DIRECTORY 957 975 tree = git_object 958 blob = None959 976 elif git_object.type == GIT_OBJ_BLOB: 960 977 kind = Node.FILE 961 tree = None962 978 blob = git_object 963 else:979 if kind is None: 964 980 raise NoSuchNode(path, rev) 965 981 else: … … 968 984 normrev = None 969 985 kind = Node.DIRECTORY 970 git_object = None971 tree = None972 blob = None973 986 974 987 self.commit = commit … … 976 989 self.tree = tree 977 990 self.blob = blob 991 self.filemode = filemode 978 992 self.created_path = path # XXX how to use? 979 993 self._created_commit = created_commit … … 1029 1043 def get_properties(self): 1030 1044 props = {} 1031 if self.tree_entry: 1032 mode = getattr(self.tree_entry, 'filemode', None) 1033 if mode is None: 1034 mode = self.tree_entry.attributes # 0.17.3 1035 props['mode'] = '%06o' % mode 1045 if self.filemode is not None: 1046 props['mode'] = '%06o' % self.filemode 1036 1047 return props 1037 1048 … … 1047 1058 1048 1059 def get_entries(self): 1049 if self.commit is None or not self.isdir:1060 if self.commit is None or self.tree is None or not self.isdir: 1050 1061 return 1051 1062 -
tracpygit2plugin/trunk/tracext/pygit2/tests/git_fs.py
r13906 r13908 31 31 REPOS_NAME = 'test.git' 32 32 REPOS_URL = 'http://example.org/git/test.git' 33 HEAD_REV = u' 0ee9cfd6538b7b994b94a45ed173d9d45272b0c5'33 HEAD_REV = u'5fa8e424840c6c4dd331343550d870e6faafadf5' 34 34 35 35 dumpfile_path = os.path.join(os.path.dirname(__file__), 'gitrepos.dump') … … 232 232 def test_get_quickjump_entries(self): 233 233 entries = self.repos.get_quickjump_entries(None) 234 self.assertEquals(('branches', u'develöp', '/', 235 '0ee9cfd6538b7b994b94a45ed173d9d45272b0c5'), 234 self.assertEquals(('branches', u'develöp', '/', HEAD_REV), 236 235 entries.next()) 237 self.assertEquals(('branches', u'master', '/', 238 '0ee9cfd6538b7b994b94a45ed173d9d45272b0c5'), 236 self.assertEquals(('branches', u'master', '/', HEAD_REV), 239 237 entries.next()) 240 self.assertEquals(('branches', u'stâble', '/', 241 '0ee9cfd6538b7b994b94a45ed173d9d45272b0c5'), 238 self.assertEquals(('branches', u'stâble', '/', HEAD_REV), 242 239 entries.next()) 243 240 self.assertEquals(('tags', u'ver0.1', '/', … … 343 340 self.assertEquals( 344 341 [(u'develöp', True), ('master', True), (u'stâble', True)], 345 self.repos.get_changeset( '0ee9cfd').get_branches())342 self.repos.get_changeset(HEAD_REV[:7]).get_branches()) 346 343 347 344 def test_changeset_get_tags(self): … … 488 485 self.assertRaises(StopIteration, history.next) 489 486 487 def test_get_node_submodule(self): 488 node = self.repos.get_node('/') 489 entries = dict((node.path, node) for node in node.get_entries()) 490 self.assertTrue(u'submod' in entries) 491 492 node = entries.get(u'submod') 493 self.assertNotEquals(None, node) 494 self.assertEquals(HEAD_REV, node.rev) 495 self.assertTrue(node.isdir) 496 self.assertFalse(node.isfile) 497 self.assertEquals({'mode': '160000'}, node.get_properties()) 498 self.assertEquals([], list(node.get_entries())) 499 500 node = self.repos.get_node('/submod') 501 self.assertNotEquals(None, node) 502 self.assertTrue(node.isdir) 503 self.assertFalse(node.isfile) 504 self.assertEquals({'mode': '160000'}, node.get_properties()) 505 self.assertEquals([], list(node.get_entries())) 506 490 507 # TODO: GitNode.get_annotations(self): 491 508 -
tracpygit2plugin/trunk/tracext/pygit2/tests/gitrepos.dump
r13879 r13908 48 48 blob 49 49 mark :7 50 data 1251 ! root file 50 data 48 51 add dir2/simple.txt and dir2/simple-another.txt 52 52 53 53 blob 54 54 mark :8 55 data 4856 add dir2/simple.txt and dir2/simple-another.txt 55 data 12 56 ! root file 57 57 58 58 commit refs/heads/develöp … … 64 64 from :6 65 65 D dir/tété.txt 66 M 100644 : 8dir2/simple-another.txt67 M 100644 : 8dir2/simple.txt66 M 100644 :7 dir2/simple-another.txt 67 M 100644 :7 dir2/simple.txt 68 68 M 100644 :2 root-sample.txt 69 M 100644 : 7root-tété.txt69 M 100644 :8 root-tété.txt 70 70 M 100644 :5 āāā-file.txt 71 71 D āāā/file.txt 72 72 73 blob 74 mark :10 75 data 57 76 [submodule "submod"] 77 path = submod 78 url = /tmp/gitrepos 79 80 commit refs/heads/develöp 81 mark :11 82 author Joé <joe@example.com> 1399392953 +0900 83 committer Joé <joe@example.com> 1399392953 +0900 84 data 24 85 added submodule'd entry 86 from :9 87 M 100644 :10 .gitmodules 88 M 160000 0ee9cfd6538b7b994b94a45ed173d9d45272b0c5 submod 89 73 90 reset refs/heads/master 74 from : 991 from :11 75 92 76 93 reset refs/tags/vér0.1 … … 78 95 79 96 reset refs/heads/stâble 80 from : 997 from :11 81 98 82 99 reset refs/heads/master 83 from : 9100 from :11 84 101
Note: See TracChangeset
for help on using the changeset viewer.