From 13c08bd8abb0b158e10afb3837caf566d02a9f2c Mon Sep 17 00:00:00 2001 From: TestUser Date: Sat, 9 Oct 2010 12:17:42 -0500 Subject: [PATCH] Fixed issue #220: Enhancement, support creating bare repositories Attempt to add 'bare' for init and clone per Issue 220 Signed-off-by: freedragon Signed-off-by: Frank Li --- src/Resources/TortoiseProcENG.rc | Bin 456926 -> 458820 bytes src/TortoiseProc/CloneDlg.cpp | 7 ++ src/TortoiseProc/CloneDlg.h | 2 + src/TortoiseProc/Commands/CloneCommand.cpp | 9 +- .../Commands/CreateRepositoryCommand.h | 37 +++++--- src/TortoiseProc/CreateRepoDlg.cpp | 100 +++++++++++++++++++++ src/TortoiseProc/CreateRepoDlg.h | 40 +++++++++ src/TortoiseProc/TortoiseProc.vcproj | 32 ++++--- src/TortoiseProc/resource.h | Bin 169494 -> 169712 bytes src/TortoiseShell/resourceshell.rc | 2 +- 10 files changed, 203 insertions(+), 26 deletions(-) create mode 100644 src/TortoiseProc/CreateRepoDlg.cpp create mode 100644 src/TortoiseProc/CreateRepoDlg.h diff --git a/src/Resources/TortoiseProcENG.rc b/src/Resources/TortoiseProcENG.rc index fae96db4b9c39a3407862d77a00f2040e567a766..b8a64bb3f985335672b61c4290d3ac34d41bc474 100644 GIT binary patch delta 778 zcwT){L2DCH5T4z)*|ZS?G1#E7Aw?lYLTI{aHWdUdR?I=$rqW&nO*hf3joG?sEWtw~ zh`kgPpE_3s@g&%T5b#if_FU|>hhqE%w&2;$dx^1lkjES54Kv^O&CJ`|4{tS2H=Zb; z)Ppbh?YMFdTbC6Lzi+C2VH+y23=TwL0`lNOk-Qw)C2;uAPRM(U;+G)D13zYiCYTVX zJ3=-|XB^_(sSe_{$@HfGtNQYQH{Sa&@=W!4b1(_hFoo^3at0$as!z%Aq2C7IxcMCY zTWX&tOT;z?t}6EHS(Z9BN~mKJH;sXlER55e>XrU6!SN?{0Y|nKExaf-+NAoZ=3%%F z4z}l55L3TA1DM`Z{XDVb>+d!Ilc>B=9-T0x`jq4vCFG32$M!3h#Gm&(`f8nKQ6s!1 zC=+&tyv}r1$hxp7nJZ8wTadiVP$Iud-W|#)%cx73QSys~@bI6k8dY2LDv}kQ6d*y- z8&D@k8?5tGQl?Xvm}UcW?l)dMj=LNHR38s^jNP0F|mZ4 z)PyXuB!JK-et<1s@&C{s?Jp|v#iT@}D?sGqwWqo_nTPwmw)1jPf}|h^up)(&KnP91 zUHOXfeQPjefFZwEXElagO$yTdK{bdUrnC*5YwPd$@c7y0sU~w@VCyp*z>5*>?`M0w d%hqt$)NV5qGWfQ|LTl?;jjpG;p4D?74*{JzuZ92s delta 53 zcwRfwAan1dbVCc{7N$>!CYKe9O?P<8#J2s_VWugcwm;a-{A%*_fHW4a_CEnEK+L-R JPXL?8dH~AW8Q1^- diff --git a/src/TortoiseProc/CloneDlg.cpp b/src/TortoiseProc/CloneDlg.cpp index aeaded04b..dc8c8da54 100644 --- a/src/TortoiseProc/CloneDlg.cpp +++ b/src/TortoiseProc/CloneDlg.cpp @@ -17,6 +17,7 @@ CCloneDlg::CCloneDlg(CWnd* pParent /*=NULL*/) { m_bAutoloadPuttyKeyFile = CAppUtils::IsSSHPutty(); + m_bBare = FALSE; m_bSVN = FALSE; m_bSVNTrunk = FALSE; m_bSVNTags = FALSE; @@ -61,6 +62,7 @@ void CCloneDlg::DoDataExchange(CDataExchange* pDX) DDX_Text(pDX, IDC_EDIT_USERNAME,m_strUserName); DDX_Check(pDX, IDC_CHECK_DEPTH, m_bDepth); + DDX_Check(pDX, IDC_CHECK_BARE, m_bBare); DDX_Text(pDX, IDC_EDIT_DEPTH,m_nDepth); } @@ -141,6 +143,7 @@ BEGIN_MESSAGE_MAP(CCloneDlg, CResizableStandAloneDialog) ON_BN_CLICKED(IDC_CHECK_SVN_BRANCH, &CCloneDlg::OnBnClickedCheckSvnBranch) ON_BN_CLICKED(IDC_CHECK_SVN_FROM, &CCloneDlg::OnBnClickedCheckSvnFrom) ON_BN_CLICKED(IDC_CHECK_DEPTH, &CCloneDlg::OnBnClickedCheckDepth) + ON_BN_CLICKED(IDC_CHECK_BARE, &CCloneDlg::OnBnClickedCheckBare) ON_BN_CLICKED(IDC_CHECK_USERNAME, &CCloneDlg::OnBnClickedCheckUsername) END_MESSAGE_MAP() @@ -408,6 +411,10 @@ void CCloneDlg::OnBnClickedCheckSvnFrom() this->GetDlgItem(IDC_EDIT_SVN_FROM)->EnableWindow(this->m_bSVNFrom&&this->m_bSVN); } +void CCloneDlg::OnBnClickedCheckBare() +{ + UpdateData(TRUE); +} void CCloneDlg::OnBnClickedCheckDepth() { UpdateData(TRUE); diff --git a/src/TortoiseProc/CloneDlg.h b/src/TortoiseProc/CloneDlg.h index 06bc34c67..feb0218c3 100644 --- a/src/TortoiseProc/CloneDlg.h +++ b/src/TortoiseProc/CloneDlg.h @@ -46,6 +46,7 @@ public: BOOL m_bSVNFrom; BOOL m_bDepth; BOOL m_bSVNUserName; + BOOL m_bBare; int m_nDepth; @@ -66,6 +67,7 @@ public: afx_msg void OnCbenEndeditUrlcombo(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnCbnEditchangeUrlcombo(); + afx_msg void OnBnClickedCheckBare(); afx_msg void OnBnClickedCheckSvn(); afx_msg void OnBnClickedCheckSvnTrunk(); afx_msg void OnBnClickedCheckSvnTag(); diff --git a/src/TortoiseProc/Commands/CloneCommand.cpp b/src/TortoiseProc/Commands/CloneCommand.cpp index 2656aaee0..6a9adbe98 100644 --- a/src/TortoiseProc/Commands/CloneCommand.cpp +++ b/src/TortoiseProc/Commands/CloneCommand.cpp @@ -34,6 +34,12 @@ bool CloneCommand::Execute() dlg.m_Directory=this->orgCmdLinePath.GetWinPathString(); if(dlg.DoModal()==IDOK) { + CString BareStr; + if(dlg.m_bBare) + BareStr = _T("--bare"); + else + BareStr = _T(""); + if(dlg.m_bAutoloadPuttyKeyFile) { CAppUtils::LaunchPAgent(&dlg.m_strPuttyKeyFile); @@ -69,7 +75,8 @@ bool CloneCommand::Execute() progressarg = _T("--progress"); - cmd.Format(_T("git.exe clone %s -v %s \"%s\" \"%s\""), + cmd.Format(_T("git.exe clone %s %s -v %s \"%s\" \"%s\""), + BareStr, progressarg, depth, url, diff --git a/src/TortoiseProc/Commands/CreateRepositoryCommand.h b/src/TortoiseProc/Commands/CreateRepositoryCommand.h index cada30c47..60deebb44 100644 --- a/src/TortoiseProc/Commands/CreateRepositoryCommand.h +++ b/src/TortoiseProc/Commands/CreateRepositoryCommand.h @@ -22,6 +22,8 @@ #include "MessageBox.h" #include "CommonResource.h" #include "git.h" + +#include "CreateRepoDlg.h" /** * \ingroup TortoiseProc * Creates a repository @@ -34,20 +36,31 @@ public: */ virtual bool Execute() { - CGit git; - git.m_CurrentDir=this->orgCmdLinePath.GetWinPath(); - CString output; - - if (git.Run(_T("git.exe init-db"),&output,CP_UTF8)) - { - CMessageBox::Show(hwndExplorer, output, _T("TortoiseGit"), MB_ICONERROR); - return false; - } - else + CCreateRepoDlg dlg; + if(dlg.DoModal()==IDOK) { - CMessageBox::Show(hwndExplorer, output, _T("TortoiseGit"), MB_OK | MB_ICONINFORMATION); + CGit git; + git.m_CurrentDir=this->orgCmdLinePath.GetWinPath(); + CString output; + int Ret; + + if (dlg.m_bBare) Ret = git.Run(_T("git.exe init-db --bare"),&output,CP_UTF8); + else Ret = git.Run(_T("git.exe init-db"),&output,CP_UTF8); + + if (output.IsEmpty()) output = _T("git.Run() had no output"); + + if (Ret) + { + CMessageBox::Show(hwndExplorer, output, _T("TortoiseGit"), MB_ICONERROR); + return false; + } + else + { + CMessageBox::Show(hwndExplorer, output, _T("TortoiseGit"), MB_OK | MB_ICONINFORMATION); + } + return true; } - return true; + return false; } }; diff --git a/src/TortoiseProc/CreateRepoDlg.cpp b/src/TortoiseProc/CreateRepoDlg.cpp new file mode 100644 index 000000000..ed9229d9f --- /dev/null +++ b/src/TortoiseProc/CreateRepoDlg.cpp @@ -0,0 +1,100 @@ +// CreateRepoDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "TortoiseProc.h" +#include "CreateRepoDlg.h" +#include "BrowseFolder.h" +#include "MessageBox.h" +#include "AppUtils.h" +// CCreateRepoDlg dialog + +IMPLEMENT_DYNCREATE(CCreateRepoDlg, CResizableStandAloneDialog) + +CCreateRepoDlg::CCreateRepoDlg(CWnd* pParent /*=NULL*/) + : CResizableStandAloneDialog(CCreateRepoDlg::IDD, pParent) +{ + + m_bBare = FALSE; + +} + +CCreateRepoDlg::~CCreateRepoDlg() +{ +} + +void CCreateRepoDlg::DoDataExchange(CDataExchange* pDX) +{ + CResizableStandAloneDialog::DoDataExchange(pDX); + + DDX_Check(pDX,IDC_CHECK_BARE, m_bBare); + +} + +BOOL CCreateRepoDlg::OnInitDialog() +{ + CResizableStandAloneDialog::OnInitDialog(); + //AddAnchor(IDC_URLCOMBO, TOP_LEFT, TOP_RIGHT); + //AddAnchor(IDC_CLONE_BROWSE_URL, TOP_RIGHT); + //AddAnchor(IDC_CLONE_DIR, TOP_LEFT,TOP_RIGHT); + //AddAnchor(IDC_CLONE_DIR_BROWSE, TOP_RIGHT); + AddAnchor(IDOK,BOTTOM_RIGHT); + AddAnchor(IDCANCEL,BOTTOM_RIGHT); + + //AddAnchor(IDC_GROUP_CLONE,TOP_LEFT,TOP_RIGHT); + //AddAnchor(IDC_PUTTYKEYFILE_BROWSE,TOP_RIGHT); + //AddAnchor(IDC_PUTTYKEY_AUTOLOAD,TOP_LEFT); + //AddAnchor(IDC_PUTTYKEYFILE,TOP_LEFT,TOP_RIGHT); + //AddAnchor(IDC_CLONE_GROUP_SVN,TOP_LEFT,TOP_RIGHT); + //AddAnchor(IDHELP, BOTTOM_RIGHT); + + m_tooltips.Create(this); + CString tt; + tt.LoadString(IDS_CLONE_DEPTH_TT); + m_tooltips.AddTool(IDC_EDIT_DEPTH,tt); + m_tooltips.AddTool(IDC_CHECK_DEPTH,tt); + + this->AddOthersToAnchor(); + +/* + CWnd *window=this->GetDlgItem(IDC_CLONE_DIR); + if(window) + SHAutoComplete(window->m_hWnd, SHACF_FILESYSTEM); + */ + EnableSaveRestore(_T("CreateRepoDlg")); + + return TRUE; // return TRUE unless you set the focus to a control +} + +BEGIN_MESSAGE_MAP(CCreateRepoDlg, CResizableStandAloneDialog) + ON_BN_CLICKED(IDC_CHECK_BARE, &CCreateRepoDlg::OnBnClickedCheckBare) +END_MESSAGE_MAP() + + + +// CCloneDlg message handlers + +void CCreateRepoDlg::OnOK() +{ + UpdateData(TRUE); + + CResizableDialog::OnOK(); +} + +void CCreateRepoDlg::OnCancel() +{ + CResizableDialog::OnCancel(); +} + +void CCreateRepoDlg::OnBnClickedCheckBare() +{ + this->UpdateData(); +} +BOOL CCreateRepoDlg::PreTranslateMessage(MSG* pMsg) +{ + // TODO: Add your specialized code here and/or call the base class + m_tooltips.RelayEvent(pMsg); + + return CResizableStandAloneDialog::PreTranslateMessage(pMsg); +} + diff --git a/src/TortoiseProc/CreateRepoDlg.h b/src/TortoiseProc/CreateRepoDlg.h new file mode 100644 index 000000000..37b37a348 --- /dev/null +++ b/src/TortoiseProc/CreateRepoDlg.h @@ -0,0 +1,40 @@ +#pragma once + +#include "StandAloneDlg.h" +//#include "HistoryCombo.h" +//#include "MenuButton.h" +#include "registry.h" +#include "tooltip.h" +// CCreateRepoDlg dialog + +class CCreateRepoDlg : public CResizableStandAloneDialog +{ + DECLARE_DYNCREATE(CCreateRepoDlg) + +public: + CCreateRepoDlg(CWnd* pParent = NULL); // standard constructor + virtual ~CCreateRepoDlg(); +// Overrides + virtual void OnOK(); + virtual void OnCancel(); + +// Dialog Data + enum { IDD = IDD_CREATEREPO}; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + virtual BOOL OnInitDialog(); + CString m_ModuleName; + //CString m_OldURL; + + DECLARE_MESSAGE_MAP() + +public: + + BOOL m_bBare; + + afx_msg void OnBnClickedCheckBare(); + + CToolTips m_tooltips; + virtual BOOL PreTranslateMessage(MSG* pMsg); +}; diff --git a/src/TortoiseProc/TortoiseProc.vcproj b/src/TortoiseProc/TortoiseProc.vcproj index 71ed4711a..76be6d888 100644 --- a/src/TortoiseProc/TortoiseProc.vcproj +++ b/src/TortoiseProc/TortoiseProc.vcproj @@ -589,11 +589,11 @@ > + + + + diff --git a/src/TortoiseProc/resource.h b/src/TortoiseProc/resource.h index 5bf9c34a2590a4d7e21c6f504eb5e8e4194c576e..b3f82f933bb3d12c5795963f22727e6dfbd8d582 100644 GIT binary patch delta 156 zcwPaV0Av4_tP1e03XrHBV*ok;TmVM^NdQy;UjR@5asY1tY5-*bV*qpjbCIhV310wh z0AT=W0B*6v9Z8Z529t0a3X_6{ESKQ$0R)%almZr$fRG52KuQjS@=3SyNdeeXmRJE0 z13~~nmm#$~icQrKt delta 93 zcwYOkmTTG?t_droQy8omVi-ag@)?R4N`Pc0Loq`tgFBEe+4x-6b9%u=Mz+ZZym*=m uytWs3G2RHCUa){sYWu!9eLWg#iHKv?96y diff --git a/src/TortoiseShell/resourceshell.rc b/src/TortoiseShell/resourceshell.rc index 57f00c53b..1b1eaf7a3 100644 --- a/src/TortoiseShell/resourceshell.rc +++ b/src/TortoiseShell/resourceshell.rc @@ -196,7 +196,7 @@ BEGIN IDS_MENUCHECKOUT "Switch/Chec&kout..." IDS_MENUUPDATE "Submodule &Update" IDS_MENUCOMMIT "&Commit..." - IDS_MENUCREATEREPOS "Create repositor&y here" + IDS_MENUCREATEREPOS "Create repositor&y here..." IDS_MENUADD "&Add..." IDS_MENUREVERT "Re&vert..." IDS_MENUCLEANUP "&Clean up..." -- 2.11.4.GIT