From f3c7489b0c705774be96ca6532678a0781e2d862 Mon Sep 17 00:00:00 2001 From: Frank Li Date: Sun, 19 Jul 2009 13:12:40 +0800 Subject: [PATCH] Fixed issue #118: Enhancement: "Git Clone" from SVN repository with additional start revision number option (-r xxx:HEAD) Signed-off-by: Frank Li --- src/Resources/TortoiseProcENG.rc | Bin 440430 -> 440804 bytes src/TortoiseGitSetup/VersionNumberInclude.wxi | 2 +- src/TortoiseProc/CloneDlg.cpp | 40 ++++++++++++++++++++++++++ src/TortoiseProc/CloneDlg.h | 4 +++ src/TortoiseProc/Commands/CloneCommand.cpp | 7 +++++ src/TortoiseProc/resource.h | Bin 163332 -> 163516 bytes 6 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/Resources/TortoiseProcENG.rc b/src/Resources/TortoiseProcENG.rc index f37e3991613674b6d5606b1a913824cadb1e2c8f..6aea821331a75e3179c46c651a0a823c0be15006 100644 GIT binary patch delta 420 zcmX|-F-Tis6ovo){7DEIG=i2^qrSwDK||1*CW6kvq193lq$=2{7D@?e3l1VLPzVTx z;6EI3N*qMgSZkiXwCH4;p>)#Gsp2e=>LirDWXNzi7tVJN+;d&)y!zW|ev%gUxAoTN zxZa=5^Y=G+xwL~c{arG&dgYQC-8LEIudgsT_(;Wc`eTOaQ>1vdi*cIg(!-t-Uh2YH zNY^f0Y&pPF77X-rql6_HVQ&e&9NR;NV?VKCC%#}s(s-^y`ro}*86v`L871a}GEDPK zKH#;5cQVPjL(Fi&LcrOJISlFf^$<-PE_Xz{7Vr7TLLawnEHdA&9&_G;kL@Y0@yv0O z4Zq2WBwuaH0bR>_=#Swcm#Y|&37!n7H||6|k;NO?O{du~mk)5vjT;%zM!E4X%`&1~ jtYFYN3C3l2u3CXzt*GcI19vKxGj5eLF59?uPyF}~-Y}HX delta 354 zcmX|6%S!@b9Nh2sZL&tl1|cD8wRH%4U_xd_5E0=Y(9y%JY+rn2VH` zAS4$nWy@1Y5J(Vo@)-0uMh^<2h}KJoxy%gnczE|bzj%x-R-tl{MXci@O))XEG%Av7 zDdg^H9?=rTP#7SYt>D|F9vqe^DqM*{Y?_qDk4ZV~G$~`LWy&$Jw-JWxj1-Y-=+2N7 zl)}=mG$vLXKBzIKK|P{5q0ef#du1|qecT1r&;1CSUq7Roo!}KlRTID8 z3hL)H3^l;padAQpC?}MHzRdy%y19Zyixi|!$&057Ex@>CZj_&>qh(GwBdrBeNSee= zm9AP}x)FS|RlQ1eTvuorMnCU@E5JLTRw#qyKKrkYvvG7bnGePgcOd`4Rmdjm70I}q fU9XX~UgK|3Hi5naJ_7xVJF>RNhHT|O+G3Y~ - + diff --git a/src/TortoiseProc/CloneDlg.cpp b/src/TortoiseProc/CloneDlg.cpp index 67c9ebc..382d3f4 100644 --- a/src/TortoiseProc/CloneDlg.cpp +++ b/src/TortoiseProc/CloneDlg.cpp @@ -24,6 +24,8 @@ CCloneDlg::CCloneDlg(CWnd* pParent /*=NULL*/) m_strSVNTrunk = _T("trunk"); m_strSVNTags = _T("tags"); m_strSVNBranchs = _T("branches"); + + m_nSVNFrom = 0; } CCloneDlg::~CCloneDlg() @@ -42,10 +44,12 @@ void CCloneDlg::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX,IDC_CHECK_SVN_TRUNK, m_bSVNTrunk); DDX_Check(pDX,IDC_CHECK_SVN_TAG, m_bSVNTags); DDX_Check(pDX,IDC_CHECK_SVN_BRANCH, m_bSVNBranch); + DDX_Check(pDX,IDC_CHECK_SVN_FROM, m_bSVNFrom); DDX_Text(pDX, IDC_EDIT_SVN_TRUNK, m_strSVNTrunk); DDX_Text(pDX, IDC_EDIT_SVN_TAG, m_strSVNTags); DDX_Text(pDX, IDC_EDIT_SVN_BRANCH, m_strSVNBranchs); + DDX_Text(pDX, IDC_EDIT_SVN_FROM, this->m_nSVNFrom); } @@ -113,6 +117,7 @@ BEGIN_MESSAGE_MAP(CCloneDlg, CResizableStandAloneDialog) ON_BN_CLICKED(IDC_CHECK_SVN_TRUNK, &CCloneDlg::OnBnClickedCheckSvnTrunk) ON_BN_CLICKED(IDC_CHECK_SVN_TAG, &CCloneDlg::OnBnClickedCheckSvnTag) ON_BN_CLICKED(IDC_CHECK_SVN_BRANCH, &CCloneDlg::OnBnClickedCheckSvnBranch) + ON_BN_CLICKED(IDC_CHECK_SVN_FROM, &CCloneDlg::OnBnClickedCheckSvnFrom) END_MESSAGE_MAP() @@ -228,6 +233,7 @@ void CCloneDlg::OnCbnEditchangeUrlcombo() this->UpdateData(); CString url; m_URLCombo.GetWindowText(url); + if(m_OldURL == url ) return; @@ -301,10 +307,36 @@ void CCloneDlg::OnCbnEditchangeUrlcombo() void CCloneDlg::OnBnClickedCheckSvn() { + this->UpdateData(); + + if(this->m_bSVN) + { + CString str; + m_URLCombo.GetWindowText(str); + + while(str.GetLength()>=1 && + str[str.GetLength()-1] == _T('\\') && + str[str.GetLength()-1] == _T('/')) + { + str=str.Left(str.GetLength()-1); + } + if(str.GetLength()>=5 && (str.Right(5).MakeLower() == _T("trunk") )) + { + this->m_bSVNBranch=this->m_bSVNTags=this->m_bSVNTrunk = FALSE; + this->UpdateData(FALSE); + }else + { + this->m_bSVNBranch=this->m_bSVNTags=this->m_bSVNTrunk = TRUE; + this->UpdateData(FALSE); + } + + } + // TODO: Add your control notification handler code here OnBnClickedCheckSvnTrunk(); OnBnClickedCheckSvnTag(); OnBnClickedCheckSvnBranch(); + OnBnClickedCheckSvnFrom(); } void CCloneDlg::OnBnClickedCheckSvnTrunk() @@ -330,3 +362,11 @@ void CCloneDlg::OnBnClickedCheckSvnBranch() this->GetDlgItem(IDC_CHECK_SVN_BRANCH)->EnableWindow(this->m_bSVN); this->GetDlgItem(IDC_EDIT_SVN_BRANCH)->EnableWindow(this->m_bSVNBranch&&this->m_bSVN); } + +void CCloneDlg::OnBnClickedCheckSvnFrom() +{ + // TODO: Add your control notification handler code here + UpdateData(TRUE); + this->GetDlgItem(IDC_CHECK_SVN_FROM)->EnableWindow(this->m_bSVN); + this->GetDlgItem(IDC_EDIT_SVN_FROM)->EnableWindow(this->m_bSVNFrom&&this->m_bSVN); +} diff --git a/src/TortoiseProc/CloneDlg.h b/src/TortoiseProc/CloneDlg.h index 0820aac..b5028cc 100644 --- a/src/TortoiseProc/CloneDlg.h +++ b/src/TortoiseProc/CloneDlg.h @@ -43,9 +43,12 @@ public: BOOL m_bSVNTrunk; BOOL m_bSVNTags; BOOL m_bSVNBranch; + BOOL m_bSVNFrom; + CString m_strSVNTrunk; CString m_strSVNTags; CString m_strSVNBranchs; + int m_nSVNFrom; afx_msg void OnBnClickedPuttykeyfileBrowse(); afx_msg void OnBnClickedPuttykeyAutoload(); @@ -58,4 +61,5 @@ public: afx_msg void OnBnClickedCheckSvnTrunk(); afx_msg void OnBnClickedCheckSvnTag(); afx_msg void OnBnClickedCheckSvnBranch(); + afx_msg void OnBnClickedCheckSvnFrom(); }; diff --git a/src/TortoiseProc/Commands/CloneCommand.cpp b/src/TortoiseProc/Commands/CloneCommand.cpp index 361748e..805de19 100644 --- a/src/TortoiseProc/Commands/CloneCommand.cpp +++ b/src/TortoiseProc/Commands/CloneCommand.cpp @@ -74,6 +74,13 @@ bool CloneCommand::Execute() if(dlg.m_bSVNTags) cmd+=_T(" -t ")+dlg.m_strSVNTags; + if(dlg.m_bSVNFrom) + { + CString str; + str.Format(_T("%d:HEAD"),dlg.m_nSVNFrom); + cmd+=_T(" -r ")+str; + } + } CProgressDlg progress; progress.m_GitCmd=cmd; diff --git a/src/TortoiseProc/resource.h b/src/TortoiseProc/resource.h index 67b1957ed364437890b724b5367af597dddb552a..cd17e9df9e39d7a4d165b201c59531133f9ca074 100644 GIT binary patch delta 76 zcmV-S0JHyu{0Y4M34pW#KsJ-^SqPWvRRIcCRw?H-lu1%M~cmWcZAb|k{ i0bi4$qa~BT4+OW;g8{PnmoS6@7MI|B0u-07eF9d$^&YSQ delta 47 zcmV+~0MP%u{RxEp34pW#KsJ-^a1OVsHUXebm#~Qe8n?iN0etzFFoXdXmp*+06qjax F0#^Mr6LbIo -- 2.11.0