@@ -781,6 +781,70 @@ def test_iter_nodes(self):
781
781
(root_commit , 'B/b2.txt' ),
782
782
], [(node .created_rev , node .path ) for node in nodes ])
783
783
784
+ def test_colon_character_in_filename (self ):
785
+ self ._git_init (data = False )
786
+ self ._git_fast_import (self ._data_colon_character_in_filename )
787
+ self ._add_repository ('gitrepos' )
788
+ repos = self ._repomgr .get_repository ('gitrepos' )
789
+ repos .sync ()
790
+ rev1 = '382e1e6b85ba20ce8a84af1a875eaa50b8e1e092' # root commit
791
+ rev2 = 'd8001832aad079f85a39a54a388a8b15fe31093d'
792
+ ADD = Changeset .ADD
793
+ MOVE = Changeset .MOVE
794
+ FILE = Node .FILE
795
+
796
+ cset = repos .get_changeset (rev1 )
797
+ self .assertEqual (set ([('0100644' , FILE , ADD , None , None ),
798
+ ('0100644.txt' , FILE , ADD , None , None ),
799
+ (':100644' , FILE , ADD , None , None ),
800
+ (':100644.txt' , FILE , ADD , None , None ),
801
+ ('a100644' , FILE , ADD , None , None ),
802
+ ('a100644.txt' , FILE , ADD , None , None )
803
+ ]),
804
+ set (cset .get_changes ()))
805
+
806
+ cset = repos .get_changeset (rev2 )
807
+ self .assertEqual (set ([(':100666' , FILE , MOVE , ':100644' , rev1 )]),
808
+ set (cset .get_changes ()))
809
+
810
+ _data_colon_character_in_filename = """\
811
+ blob
812
+ mark :1
813
+ data 0
814
+
815
+ blob
816
+ mark :2
817
+ data 16
818
+ ...............
819
+
820
+ reset refs/heads/master
821
+ commit refs/heads/master
822
+ mark :3
823
+ author Joe <[email protected] > 1491387182 +0000
824
+ committer Joe <[email protected] > 1491387182 +0000
825
+ data 9
826
+ (#12758)
827
+ M 100644 :1 0100644.txt
828
+ M 100644 :1 0100644
829
+ M 100644 :1 :100644.txt
830
+ M 100644 :2 :100644
831
+ M 100644 :1 a100644.txt
832
+ M 100644 :1 a100644
833
+
834
+ commit refs/heads/master
835
+ mark :4
836
+ author Joe <[email protected] > 1491387183 +0000
837
+ committer Joe <[email protected] > 1491387183 +0000
838
+ data 16
839
+ (#12758) rename
840
+ from :3
841
+ D :100644
842
+ M 100644 :2 :100666
843
+
844
+ reset refs/heads/master
845
+ from :4
846
+ """
847
+
784
848
def _get_quickjump_names (self , repos ):
785
849
return list (name for type , name , path , rev
786
850
in repos .get_quickjump_entries ('HEAD' ))
0 commit comments