OSDN Git Service

Fixed issue #118: Enhancement: "Git Clone" from SVN repository with additional start...
authorFrank Li <lznuaa@gmail.com>
Sun, 19 Jul 2009 05:12:40 +0000 (13:12 +0800)
committerFrank Li <lznuaa@gmail.com>
Sun, 19 Jul 2009 05:12:40 +0000 (13:12 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Resources/TortoiseProcENG.rc
src/TortoiseGitSetup/VersionNumberInclude.wxi
src/TortoiseProc/CloneDlg.cpp
src/TortoiseProc/CloneDlg.h
src/TortoiseProc/Commands/CloneCommand.cpp
src/TortoiseProc/resource.h

index f37e399..6aea821 100644 (file)
Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ
index 7f37a0c..337bf22 100644 (file)
@@ -2,6 +2,6 @@
 <Include Id="VersionNumberInclude">\r
        <?define MajorVersion="0" ?>\r
        <?define MinorVersion="8" ?>\r
-       <?define MicroVersion="1" ?>\r
+       <?define MicroVersion="2" ?>\r
        <?define BuildVersion="0" ?>\r
 </Include>\r
index 67c9ebc..382d3f4 100644 (file)
@@ -24,6 +24,8 @@ CCloneDlg::CCloneDlg(CWnd* pParent /*=NULL*/)
        m_strSVNTrunk = _T("trunk");\r
        m_strSVNTags = _T("tags");\r
        m_strSVNBranchs = _T("branches");\r
+\r
+       m_nSVNFrom = 0;\r
 }\r
 \r
 CCloneDlg::~CCloneDlg()\r
@@ -42,10 +44,12 @@ void CCloneDlg::DoDataExchange(CDataExchange* pDX)
        DDX_Check(pDX,IDC_CHECK_SVN_TRUNK, m_bSVNTrunk);\r
        DDX_Check(pDX,IDC_CHECK_SVN_TAG, m_bSVNTags);\r
        DDX_Check(pDX,IDC_CHECK_SVN_BRANCH, m_bSVNBranch);\r
+       DDX_Check(pDX,IDC_CHECK_SVN_FROM, m_bSVNFrom);\r
 \r
        DDX_Text(pDX, IDC_EDIT_SVN_TRUNK, m_strSVNTrunk);\r
        DDX_Text(pDX, IDC_EDIT_SVN_TAG, m_strSVNTags);\r
        DDX_Text(pDX, IDC_EDIT_SVN_BRANCH, m_strSVNBranchs);\r
+       DDX_Text(pDX, IDC_EDIT_SVN_FROM, this->m_nSVNFrom);\r
 \r
 }\r
 \r
@@ -113,6 +117,7 @@ BEGIN_MESSAGE_MAP(CCloneDlg, CResizableStandAloneDialog)
        ON_BN_CLICKED(IDC_CHECK_SVN_TRUNK, &CCloneDlg::OnBnClickedCheckSvnTrunk)\r
        ON_BN_CLICKED(IDC_CHECK_SVN_TAG, &CCloneDlg::OnBnClickedCheckSvnTag)\r
        ON_BN_CLICKED(IDC_CHECK_SVN_BRANCH, &CCloneDlg::OnBnClickedCheckSvnBranch)\r
+       ON_BN_CLICKED(IDC_CHECK_SVN_FROM, &CCloneDlg::OnBnClickedCheckSvnFrom)\r
 END_MESSAGE_MAP()\r
 \r
 \r
@@ -228,6 +233,7 @@ void CCloneDlg::OnCbnEditchangeUrlcombo()
        this->UpdateData();\r
        CString url;\r
        m_URLCombo.GetWindowText(url);\r
+\r
        if(m_OldURL == url )\r
                return;\r
 \r
@@ -301,10 +307,36 @@ void CCloneDlg::OnCbnEditchangeUrlcombo()
 \r
 void CCloneDlg::OnBnClickedCheckSvn()\r
 {\r
+       this->UpdateData();\r
+\r
+       if(this->m_bSVN)\r
+       {\r
+               CString str;\r
+               m_URLCombo.GetWindowText(str);\r
+\r
+               while(str.GetLength()>=1 && \r
+                       str[str.GetLength()-1] == _T('\\') &&\r
+                       str[str.GetLength()-1] == _T('/'))\r
+               {\r
+                       str=str.Left(str.GetLength()-1);\r
+               }\r
+               if(str.GetLength()>=5 && (str.Right(5).MakeLower() == _T("trunk") ))\r
+               {\r
+                       this->m_bSVNBranch=this->m_bSVNTags=this->m_bSVNTrunk = FALSE;\r
+                       this->UpdateData(FALSE);\r
+               }else\r
+               {\r
+                       this->m_bSVNBranch=this->m_bSVNTags=this->m_bSVNTrunk = TRUE;\r
+                       this->UpdateData(FALSE);\r
+               }\r
+\r
+       }\r
+\r
        // TODO: Add your control notification handler code here\r
        OnBnClickedCheckSvnTrunk();\r
        OnBnClickedCheckSvnTag();\r
        OnBnClickedCheckSvnBranch();\r
+       OnBnClickedCheckSvnFrom();\r
 }\r
 \r
 void CCloneDlg::OnBnClickedCheckSvnTrunk()\r
@@ -330,3 +362,11 @@ void CCloneDlg::OnBnClickedCheckSvnBranch()
        this->GetDlgItem(IDC_CHECK_SVN_BRANCH)->EnableWindow(this->m_bSVN);\r
        this->GetDlgItem(IDC_EDIT_SVN_BRANCH)->EnableWindow(this->m_bSVNBranch&&this->m_bSVN);\r
 }\r
+\r
+void CCloneDlg::OnBnClickedCheckSvnFrom()\r
+{\r
+       // TODO: Add your control notification handler code here\r
+       UpdateData(TRUE);\r
+       this->GetDlgItem(IDC_CHECK_SVN_FROM)->EnableWindow(this->m_bSVN);\r
+       this->GetDlgItem(IDC_EDIT_SVN_FROM)->EnableWindow(this->m_bSVNFrom&&this->m_bSVN);\r
+}\r
index 0820aac..b5028cc 100644 (file)
@@ -43,9 +43,12 @@ public:
        BOOL    m_bSVNTrunk;\r
        BOOL    m_bSVNTags;\r
        BOOL    m_bSVNBranch;\r
+       BOOL    m_bSVNFrom;\r
+\r
        CString m_strSVNTrunk;\r
        CString m_strSVNTags;\r
        CString m_strSVNBranchs;\r
+       int m_nSVNFrom;\r
 \r
     afx_msg void OnBnClickedPuttykeyfileBrowse();\r
     afx_msg void OnBnClickedPuttykeyAutoload();\r
@@ -58,4 +61,5 @@ public:
        afx_msg void OnBnClickedCheckSvnTrunk();\r
        afx_msg void OnBnClickedCheckSvnTag();\r
        afx_msg void OnBnClickedCheckSvnBranch();\r
+       afx_msg void OnBnClickedCheckSvnFrom();\r
 };\r
index 361748e..805de19 100644 (file)
@@ -74,6 +74,13 @@ bool CloneCommand::Execute()
                        if(dlg.m_bSVNTags)\r
                                cmd+=_T(" -t ")+dlg.m_strSVNTags;\r
 \r
+                       if(dlg.m_bSVNFrom)\r
+                       {\r
+                               CString str;\r
+                               str.Format(_T("%d:HEAD"),dlg.m_nSVNFrom);\r
+                               cmd+=_T(" -r ")+str;\r
+                       }\r
+\r
                }\r
                CProgressDlg progress;\r
                progress.m_GitCmd=cmd;\r
index 67b1957..cd17e9d 100644 (file)
Binary files a/src/TortoiseProc/resource.h and b/src/TortoiseProc/resource.h differ