OSDN Git Service

Handle rename in path {}
[tortoisegit/TortoiseGitJp.git] / src / Git / TGitPath.cpp
index cb3d369..0d83418 100644 (file)
@@ -946,9 +946,19 @@ int CTGitPathList::ParserFromLog(CString &log)
                        int rename=one.Find(_T(" => "));\r
                        if(rename>0)\r
                        {\r
-                               path.SetFromGit(one.Right(one.GetLength()-rename-4),&one.Left(rename));\r
+                               CString basepath;\r
+                               int include_left=one.Find(_T("{"));\r
+                               int include_right=one.Find(_T("}"),rename);\r
+                               if(include_left>0 && include_right>0 )\r
+                               {\r
+                                       basepath=one.Left(include_left);\r
+                                       CString newname=basepath+one.Mid(rename+4,include_right-rename-4)+one.Right(one.GetLength()-include_right-1);\r
+                                       CString oldname=basepath+one.Mid(include_left+2,rename-include_left-2)+one.Right(one.GetLength()-include_right-1);\r
+                                       path.SetFromGit(newname,&oldname        );\r
+                               }else\r
+                                       path.SetFromGit(one.Right(one.GetLength()-rename-4),&one.Left(rename));\r
                        }else\r
-                               path.SetFromGit(one.Right(one.GetLength()-tabstart));\r
+                               path.SetFromGit(one);\r
                                \r
                        CTGitPath *GitPath=LookForGitPath(path.GetGitPathString());\r
                        if(GitPath)\r