• 简单的来说:
    原理就是只要用户知道git地址和分支名,即可克隆项目到指定文件夹,省去了输命令行的时间,方便用户去操作

  • 系统要求:
    Windows系统,然后本身环境要装有git
    git安装地址:https://git-scm.com/

  • 部分源码分享:

#include "StdAfx.h"
#include "MainWnd.h"
using namespace std;BEGIN_MSG_MAP(CMainWnd)MSG_WM_INITDIALOG(OnInitDialog)MSG_WM_SIZE(OnSize)CHAIN_MSG_MAP(DMHWnd)// 将未处理的消息交由DMHWnd处理
END_MSG_MAP()
BEGIN_EVENT_MAP(CMainWnd)EVENT_NAME_COMMAND(L"closebutton",OnClose)EVENT_NAME_COMMAND(L"maxbutton",OnMaximize)EVENT_NAME_COMMAND(L"restorebutton",OnRestore)EVENT_NAME_COMMAND(L"minbutton", OnMinimize)EVENT_NAME_COMMAND(L"btn_filesave",OnSavePath) //绑定保存路径事件EVENT_NAME_COMMAND(L"btn_rungit",OnRunGit) //保存Rungit事件
END_EVENT_MAP()BOOL CMainWnd::OnInitDialog(HWND wndFocus, LPARAM lInitParam)
{//绑定相关控件m_txt_filesave = FindChildByNameT<DUIEdit>(L"txt_savepath");m_btn_git = FindChildByNameT<DUIButton>(L"btn_rungit");m_btn_filesave = FindChildByNameT<DUIButton>(L"btn_filesave");m_txt_gitpath = FindChildByNameT<DUIEdit>(L"txt_gitpath");m_txt_branchname = FindChildByNameT<DUIEdit>(L"txt_branchname");m_radiobtn_branches = FindChildByNameT<DUIRadioButton>(L"radiobtn_branches");return TRUE;
}void CMainWnd::OnSize(UINT nType, CSize size)
{DUIWindow* pMaxBtn = FindChildByName(L"maxbutton");DUIWindow* pRestoreBtn = FindChildByName(L"restorebutton");if (0 != size.cx&&0 != size.cy&&pMaxBtn&&pRestoreBtn){if (SIZE_MAXIMIZED == nType){pMaxBtn->DM_SetVisible(false);pRestoreBtn->DM_SetVisible(true);}else if (SIZE_RESTORED == nType){pMaxBtn->DM_SetVisible(true);pRestoreBtn->DM_SetVisible(false);}}//生成圆形矩形框if (!IsIconic()){CRect rcWnd;::GetWindowRect(m_hWnd, &rcWnd);::OffsetRect(&rcWnd, -rcWnd.left, -rcWnd.top); HRGN hWndRgn = ::CreateRoundRectRgn(0, 0, rcWnd.right, rcWnd.bottom,4,4);SetWindowRgn(hWndRgn, TRUE);::DeleteObject(hWndRgn);}SetMsgHandled(FALSE);  // 由DMHWnd继续处理OnSize消息
}DMCode CMainWnd::OnClose()
{DestroyWindow(); return DM_ECODE_OK;
}DMCode CMainWnd::OnMaximize()
{SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE);return DM_ECODE_OK;
}DMCode CMainWnd::OnRestore()
{SendMessage(WM_SYSCOMMAND,SC_RESTORE);return DM_ECODE_OK;
}DMCode CMainWnd::OnMinimize()
{SendMessage(WM_SYSCOMMAND,SC_MINIMIZE);return DM_ECODE_OK;
}DMCode CMainWnd::OnSavePath()
{//选择文件夹保存BROWSEINFO bi;bi.hwndOwner = NULL;bi.pidlRoot = CSIDL_DESKTOP;//文件夹的根目录,此处为桌面bi.pszDisplayName = NULL;bi.lpszTitle = NULL;//显示位于对话框左上部的提示信息bi.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;//有新建文件夹按钮bi.lpfn = NULL;bi.iImage = 0;LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//调用选择对话框if (pidl == NULL){::MessageBox(0,L"选择失败",L"当前未选择文件夹",0);return DM_ECODE_OK;}TCHAR strFolder[MAX_PATH];SHGetPathFromIDList(pidl, strFolder);//填充在Edit框上m_txt_filesave->SetWindowTextW(strFolder);//return DM_ECODE_OK;
}std::string WStringToString(const std::wstring &wstr)
{std::string str;int nLen = (int)wstr.length();str.resize(nLen, ' ');int nResult = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wstr.c_str(), nLen, (LPSTR)str.c_str(), nLen, NULL, NULL);if (nResult == 0){return "";}return str;
}DMCode CMainWnd::OnRunGit()
{//获取相关字符std::wstring str_savepath =m_txt_filesave->GetLineText(); //获取保存路径std::wstring str_branch_name = m_txt_branchname->GetLineText(); //获取分支名std::wstring str_git_path = m_txt_gitpath->GetLineText();//获取git路径bool is_full = m_radiobtn_branches->DM_IsChecked(); //判断是否被选中if (str_savepath.size() <=0 || str_branch_name.size() <= 0 || str_git_path.size()<= 0){::MessageBox(0,L"错误提示",L"当前信息填写不完善,请重新填写",0);}//str_cmd格式 like this: git clone -b http://github.com c:/ss std::wstring str_cmd = L"git clone -b ";str_cmd.append(str_branch_name);str_cmd.append(L" ");str_cmd.append(str_git_path);str_cmd.append(L" ");str_cmd.append(str_savepath);string str_cmd_path =WStringToString(str_cmd);WinExec(str_cmd_path.c_str(),SW_NORMAL); //bug:只有在normal情况下才可以gitreturn DM_ECODE_OK;
}
  • 运行截图如下:

  • 工具完整源码:
    https://github.com/huifeng-kooboo/WinGitAuto

  • 版本说明
    当前为1.0版本,还存在一些bug:
    尚未实现一键下载全部分支功能。

  • Remark:
    大家觉得好用的话可以分享给其他人一起用,毕竟开发不易。

Windows下最轻量级Git克隆工具源码分享相关推荐

  1. windows下使用GIT下载ANDROID源码

    1.安装msysgit 2.运行msysgit, 进入bash界面 3.切换工作目录 cd /d/android/source 4.初始化目录 git init 5.下载 git clone http ...

  2. 翻译python代码的软件_Linux环境下的Python翻译工具源码

    玩蛇网Python教程源码示例,本文源码是用于Linux环境下的Python翻译工具源码详解. 学习计算机编程语言一定会涉及到英文和学习应用,但通常英语词典在Linux环境下都不如Win环境下的好用. ...

  3. 视频批量去片头片尾小工具源码分享

    视频批量去片头片尾小工具源码分享(基于FFmpeg视频流复制切割,快速无损) 开发环境Delphi2010,框架VGScene(新版本用FMX) 特点:直观的预览界面,秒级的微调定位,批量预设.单个微 ...

  4. Linux及Windows下编译exosip和osip2源码

    eXosip库及编译流程简介 1.eXosip库的简介 1.1.osip简介 osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层 ...

  5. 【原创】Windows下使用 Eclipse 管理 RabbitMQ 源码之问题解决

    2019独角兽企业重金招聘Python工程师标准>>> 使用 Eclipse + Erlide 来管理 Erlang 代码是一种常见方式.本文简要说明下,本人在 Windows 下管 ...

  6. 在windows下执行./configure,make,makeinstall源码安装程序spice-gtk

    使用MSYS软件,在我的上一篇博客中有软件下载地址.本文使用MSYS进行源码编译spice-gtk-0.33. 首先打开MSYS软件,进入你源码所在目录,例如: cd  /c/Users/Admi.. ...

  7. Windows下使用Git克隆项目

    1.没有安装git的,从 git官网 下载windows版本的git 2.一般使用默认设置即可:一路next下去,git安装完毕! 3.在你要放克隆项目的工作空间中启动cmd命令,如图: 4.克隆项目 ...

  8. 小程序 祝福小工具源码分享

    2019.小程序的市场依旧是那么火爆...... 所在我在这里,想给大家分享一套关于送祝福的工具类的小程序源码.这不马上元旦.除夕夜等等一系列节日了,我们大家送给亲朋好友的祝福肯定是不能少的,那么我们 ...

  9. 一个Windows进程管理的小工具源码

    说明: 请用VC6以上编译器编译,在命令行下执行 帮助 Build[Jan 11 2007 12:14:16] version 1.00 by liubin 2006 04 25 stopp [opt ...

最新文章

  1. SAP咨询顾问被客户投诉的几个原因
  2. ORACLE12C_ADG删除pdb
  3. Python自动化开发学习的第十一周----WEB基础(jquery)
  4. 【jQuery】用jQuery给文本框添加只读属性【readOnly】
  5. js 数组、对象转json 以及json转 数组、对象
  6. Alibaba数学竞赛试题与答案汇总(持续更新中)
  7. MIS2000Lab针对.NET 4.0出版的新书
  8. 中移动12580领跑世界杯商旅营销
  9. 详解Objective-C的meta-class
  10. Hibernate中使用Criteria查询及注解——(hibernate.cfg.xml)
  11. 背叛乔布斯,库克做对了
  12. 区块链技术基础语言(三十二):Go语言网络编程(下)
  13. RecyclerView通过notifyItemChanged方法更新item数据避免闪烁
  14. 杭电1556 Color the ball
  15. python基础之应用场景
  16. web前端开发面试题(三)
  17. Jenkins怎么发邮件,5年字节自动化大神手把手教你
  18. BZOJ 2429: [HAOI2006]聪明的猴子 MST
  19. Unity图片优化神器 - Dither算法进阶方案
  20. 回溯法求解八皇后问题

热门文章

  1. 年后跳槽必备的 Java 题库,全网最全!
  2. 阿里问题定位神器 Arthas 操作实践,定位线上BUG,超给力
  3. Java多线程学习九:如何正确关闭线程池?shutdown 和 shutdownNow 的区别
  4. WinForm中导出Excel
  5. java监听上传文件,Springmvc文件上传监听详解
  6. mysql数据库group by_MySQL数据库对GROUP BY子句的功能扩展(1)
  7. spark验证部署和_kerberos系列之spark认证配置
  8. A^n=E;则(A*)^n=?
  9. [vue]vue路由篇vue-router
  10. vs2017调试浏览器闪退