\r
}\r
return FALSE;\r
-}
\ No newline at end of file
+}\r
+\r
+bool CAppUtils::CreateMultipleDirectory(CString& szPath)\r
+{\r
+ CString strDir(szPath);\r
+ if (strDir.GetAt(strDir.GetLength()-1)!=_T('\\'))\r
+ {\r
+ strDir.AppendChar(_T('\\'));\r
+ }\r
+ std::vector<CString> vPath;\r
+ CString strTemp;\r
+ bool bSuccess = false;\r
+ \r
+ for (int i=0;i<strDir.GetLength();++i)\r
+ {\r
+ if (strDir.GetAt(i) != _T('\\')) \r
+ {\r
+ strTemp.AppendChar(strDir.GetAt(i));\r
+ }\r
+ else \r
+ {\r
+ vPath.push_back(strTemp);\r
+ strTemp.AppendChar(_T('\\'));\r
+ }\r
+ }\r
+\r
+ std::vector<CString>::const_iterator vIter;\r
+ for (vIter = vPath.begin(); vIter != vPath.end(); vIter++) \r
+ {\r
+ bSuccess = CreateDirectory(*vIter, NULL) ? true : false; \r
+ }\r
+\r
+ return bSuccess;\r
+}\r
\r
static bool Push();\r
\r
+ static bool CreateMultipleDirectory(CString &dir);\r
+\r
private:\r
static CString PickDiffTool(const CTGitPath& file1, const CTGitPath& file2);\r
static bool GetMimeType(const CTGitPath& file, CString& mimetype);\r
, m_Directory(_T(""))\r
{\r
m_bAutoloadPuttyKeyFile = CAppUtils::IsSSHPutty();\r
+\r
+ m_bSVN = FALSE;\r
+ m_bSVNTrunk = FALSE;\r
+ m_bSVNTags = FALSE;\r
+ m_bSVNBranch = FALSE;;\r
+ m_strSVNTrunk = _T("trunk");\r
+ m_strSVNTags = _T("tags");\r
+ m_strSVNBranchs = _T("branches");\r
}\r
\r
CCloneDlg::~CCloneDlg()\r
DDX_Text(pDX, IDC_CLONE_DIR, m_Directory);\r
DDX_Check(pDX,IDC_PUTTYKEY_AUTOLOAD, m_bAutoloadPuttyKeyFile);\r
\r
+ DDX_Check(pDX,IDC_CHECK_SVN, m_bSVN);\r
+ 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
+\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
+\r
}\r
\r
BOOL CCloneDlg::OnInitDialog()\r
AddAnchor(IDOK,BOTTOM_RIGHT);\r
AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
\r
- AddAnchor(IDC_GROUP_CLONE,TOP_LEFT,BOTTOM_RIGHT);\r
- AddAnchor(IDC_PUTTYKEYFILE_BROWSE,BOTTOM_RIGHT);\r
- AddAnchor(IDC_PUTTYKEY_AUTOLOAD,BOTTOM_LEFT);\r
- AddAnchor(IDC_PUTTYKEYFILE,BOTTOM_LEFT,BOTTOM_RIGHT);\r
+ AddAnchor(IDC_GROUP_CLONE,TOP_LEFT,TOP_RIGHT);\r
+ AddAnchor(IDC_PUTTYKEYFILE_BROWSE,TOP_RIGHT);\r
+ AddAnchor(IDC_PUTTYKEY_AUTOLOAD,TOP_LEFT);\r
+ AddAnchor(IDC_PUTTYKEYFILE,TOP_LEFT,TOP_RIGHT);\r
+ AddAnchor(IDC_CLONE_GROUP_SVN,TOP_LEFT,TOP_RIGHT);\r
AddAnchor(IDHELP, BOTTOM_RIGHT);\r
\r
this->AddOthersToAnchor();\r
this->GetDlgItem(IDC_PUTTYKEYFILE_BROWSE)->EnableWindow(m_bAutoloadPuttyKeyFile);\r
\r
EnableSaveRestore(_T("CloneDlg"));\r
+ \r
+ OnBnClickedCheckSvn();\r
+\r
return TRUE; // return TRUE unless you set the focus to a control\r
}\r
\r
ON_NOTIFY(CBEN_BEGINEDIT, IDC_URLCOMBO, &CCloneDlg::OnCbenBegineditUrlcombo)\r
ON_NOTIFY(CBEN_ENDEDIT, IDC_URLCOMBO, &CCloneDlg::OnCbenEndeditUrlcombo)\r
ON_CBN_EDITCHANGE(IDC_URLCOMBO, &CCloneDlg::OnCbnEditchangeUrlcombo)\r
+ ON_BN_CLICKED(IDC_CHECK_SVN, &CCloneDlg::OnBnClickedCheckSvn)\r
+ 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
END_MESSAGE_MAP()\r
\r
\r
}\r
this->UpdateData(FALSE);\r
}\r
+\r
+void CCloneDlg::OnBnClickedCheckSvn()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ OnBnClickedCheckSvnTrunk();\r
+ OnBnClickedCheckSvnTag();\r
+ OnBnClickedCheckSvnBranch();\r
+}\r
+\r
+void CCloneDlg::OnBnClickedCheckSvnTrunk()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ UpdateData(TRUE);\r
+ this->GetDlgItem(IDC_CHECK_SVN_TRUNK)->EnableWindow(this->m_bSVN);\r
+ this->GetDlgItem(IDC_EDIT_SVN_TRUNK)->EnableWindow(this->m_bSVNTrunk&&this->m_bSVN);\r
+}\r
+\r
+void CCloneDlg::OnBnClickedCheckSvnTag()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ UpdateData(TRUE);\r
+ this->GetDlgItem(IDC_CHECK_SVN_TAG)->EnableWindow(this->m_bSVN);\r
+ this->GetDlgItem(IDC_EDIT_SVN_TAG)->EnableWindow(this->m_bSVNTags&&this->m_bSVN);\r
+}\r
+\r
+void CCloneDlg::OnBnClickedCheckSvnBranch()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ UpdateData(TRUE);\r
+ 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
CString m_strPuttyKeyFile;\r
CString m_URL;\r
BOOL m_bAutoloadPuttyKeyFile;\r
+ BOOL m_bSVN;\r
+ BOOL m_bSVNTrunk;\r
+ BOOL m_bSVNTags;\r
+ BOOL m_bSVNBranch;\r
+ CString m_strSVNTrunk;\r
+ CString m_strSVNTags;\r
+ CString m_strSVNBranchs;\r
+\r
afx_msg void OnBnClickedPuttykeyfileBrowse();\r
afx_msg void OnBnClickedPuttykeyAutoload();\r
afx_msg void OnCbnSelchangeUrlcombo();\r
afx_msg void OnCbenEndeditUrlcombo(NMHDR *pNMHDR, LRESULT *pResult);\r
afx_msg void OnCbnEditchangeUrlcombo();\r
\r
+ afx_msg void OnBnClickedCheckSvn();\r
+ afx_msg void OnBnClickedCheckSvnTrunk();\r
+ afx_msg void OnBnClickedCheckSvnTag();\r
+ afx_msg void OnBnClickedCheckSvnBranch();\r
};\r
cmd.Format(_T("git.exe clone -v \"%s\" \"%s\""),\r
url,\r
dir);\r
+\r
+ // Handle Git SVN-clone\r
+ if(dlg.m_bSVN)\r
+ {\r
+ WIN32_FILE_ATTRIBUTE_DATA attribs;\r
+ if(GetFileAttributesEx(dlg.m_Directory, GetFileExInfoStandard, &attribs))\r
+ {\r
+ if(!(attribs.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))\r
+ {\r
+ CString errstr;\r
+ errstr.Format(_T("%s is not valid direcotry"),dlg.m_Directory);\r
+ CMessageBox::Show(NULL,errstr,_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+ return FALSE;\r
+ }\r
+ } \r
+ else\r
+ {\r
+ DWORD err = GetLastError();\r
+ if(err == ERROR_PATH_NOT_FOUND)\r
+ {\r
+ if(!CAppUtils::CreateMultipleDirectory(dlg.m_Directory))\r
+ {\r
+ CString errstr;\r
+ errstr.Format(_T("Fail create dir: %s"),dlg.m_Directory);\r
+ CMessageBox::Show(NULL,errstr,_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+ return FALSE;\r
+ }\r
+\r
+ }\r
+ else\r
+ {\r
+ CMessageBox::Show(NULL,_T("Unknow ERROR"),_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+ return FALSE;\r
+ }\r
+ }\r
+\r
+ g_Git.m_CurrentDir=dlg.m_Directory;\r
+ cmd.Format(_T("git.exe svn clone \"%s\" "),\r
+ url);\r
+\r
+ if(dlg.m_bSVNTrunk)\r
+ cmd+=_T(" -T ")+dlg.m_strSVNTrunk;\r
+\r
+ if(dlg.m_bSVNBranch)\r
+ cmd+=_T(" -b ")+dlg.m_strSVNBranchs;\r
+\r
+ if(dlg.m_bSVNTags)\r
+ cmd+=_T(" -t ")+dlg.m_strSVNTags;\r
+\r
+ }\r
CProgressDlg progress;\r
progress.m_GitCmd=cmd;\r
if(progress.DoModal()==IDOK)\r
>\r
</File>\r
<File\r
- RelativePath=".\copy.ico"\r
+ RelativePath="..\Resources\copy.ico"\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\copy.ico"\r
+ RelativePath=".\copy.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\explorer.ico"\r
+ RelativePath=".\explorer.ico"\r
>\r
</File>\r
<File\r
- RelativePath=".\explorer.ico"\r
+ RelativePath="..\Resources\explorer.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath=".\newfolder.ico"\r
+ RelativePath="..\Resources\newfolder.ico"\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\newfolder.ico"\r
+ RelativePath=".\newfolder.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath=".\refresh.ico"\r
+ RelativePath="..\Resources\refresh.ico"\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\refresh.ico"\r
+ RelativePath=".\refresh.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\save.ico"\r
+ RelativePath=".\save.ico"\r
>\r
</File>\r
<File\r
- RelativePath=".\save.ico"\r
+ RelativePath="..\Resources\save.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath=".\up.ico"\r
+ RelativePath="..\Resources\up.ico"\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\up.ico"\r
+ RelativePath=".\up.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
+ RelativePath=".\DirFileEnum.h"\r
+ >\r
+ </File>\r
+ <File\r
RelativePath=".\DragDropImpl.cpp"\r
>\r
</File>\r