bool ImportPatchCommand::Execute() { CImportPatchDlg dlg; // dlg.m_bIsTag=TRUE; CString cmd; CString output; if (!orgPathList.IsEmpty() && !orgPathList[0].HasAdminDir()) { CString str=CAppUtils::ChooseRepository(NULL); if(str.IsEmpty()) return FALSE; CTGitPath path; path.SetFromWin(str); if(!path.HasAdminDir()) { CString err; err.Format(IDS_ERR_NOT_REPOSITORY, (LPCTSTR)str); CMessageBox::Show(NULL,err,_T("TortoiseGit"),MB_OK|MB_ICONERROR); return FALSE; } g_Git.m_CurrentDir=str; } for(int i = 0 ; i < this->orgPathList.GetCount(); ++i) { if(!orgPathList[i].IsDirectory()) { dlg.m_PathList.AddPath(orgPathList[i]); } } if(dlg.DoModal()==IDOK) { return TRUE; } return FALSE; }
void CSyncDlg::OnBnClickedButtonApply() { CGitHash oldhash; if (g_Git.GetHash(oldhash, _T("HEAD"))) { MessageBox(g_Git.GetGitLastErr(_T("Could not get HEAD hash.")), _T("TortoiseGit"), MB_ICONERROR); return; } CImportPatchDlg dlg; CString cmd,output; if(dlg.DoModal() == IDOK) { int err=0; for (int i = 0; i < dlg.m_PathList.GetCount(); ++i) { cmd.Format(_T("git.exe am \"%s\""),dlg.m_PathList[i].GetGitPathString()); if (g_Git.Run(cmd, &output, CP_UTF8)) { CMessageBox::Show(NULL,output,_T("TortoiseGit"),MB_OK); err=1; break; } this->m_ctrlCmdOut.SetSel(-1,-1); this->m_ctrlCmdOut.ReplaceSel(cmd+_T("\n")); this->m_ctrlCmdOut.SetSel(-1,-1); this->m_ctrlCmdOut.ReplaceSel(output); } CGitHash newhash; if (g_Git.GetHash(newhash, _T("HEAD"))) { MessageBox(g_Git.GetGitLastErr(_T("Could not get HEAD hash after applying patches.")), _T("TortoiseGit"), MB_ICONERROR); return; } this->m_InLogList.Clear(); this->m_InChangeFileList.Clear(); if(newhash == oldhash) { this->m_ctrlTabCtrl.ShowTab(IDC_IN_CHANGELIST-1,false); this->m_InLogList.ShowText(_T("No commits get from patch")); this->m_ctrlTabCtrl.ShowTab(IDC_IN_LOGLIST-1,true); } else { this->m_ctrlTabCtrl.ShowTab(IDC_IN_CHANGELIST-1,true); this->m_ctrlTabCtrl.ShowTab(IDC_IN_LOGLIST-1,true); CString range; range.Format(_T("%s..%s"), m_oldHash.ToString(), newhash.ToString()); this->AddDiffFileList(&m_InChangeFileList, &m_arInChangeList, newhash.ToString(), oldhash.ToString()); m_InLogList.FillGitLog(nullptr, &range, CGit::LOG_INFO_STAT| CGit::LOG_INFO_FILESTATE | CGit::LOG_INFO_SHOW_MERGEDFILE); this->FetchOutList(true); } this->m_ctrlTabCtrl.ShowTab(IDC_CMD_LOG-1,true); if(err) { this->ShowTab(IDC_CMD_LOG); } else { this->ShowTab(IDC_IN_LOGLIST); } } }
void CSyncDlg::OnBnClickedButtonApply() { CString oldhash; oldhash=g_Git.GetHash(_T("HEAD")); CImportPatchDlg dlg; CString cmd,output; if(dlg.DoModal() == IDOK) { int err=0; for(int i=0;i<dlg.m_PathList.GetCount();i++) { cmd.Format(_T("git.exe am \"%s\""),dlg.m_PathList[i].GetGitPathString()); if(g_Git.Run(cmd,&output,CP_ACP)) { CMessageBox::Show(NULL,output,_T("TortoiseGit"),MB_OK); err=1; break; } this->m_ctrlCmdOut.SetSel(-1,-1); this->m_ctrlCmdOut.ReplaceSel(cmd+_T("\n")); this->m_ctrlCmdOut.SetSel(-1,-1); this->m_ctrlCmdOut.ReplaceSel(output); } CString newhash=g_Git.GetHash(_T("HEAD")); this->m_InLogList.Clear(); this->m_InChangeFileList.Clear(); if(newhash == oldhash) { this->m_ctrlTabCtrl.ShowTab(IDC_IN_CHANGELIST-1,false); this->m_InLogList.ShowText(_T("No commits get from patch")); this->m_ctrlTabCtrl.ShowTab(IDC_IN_LOGLIST-1,true); } else { this->m_ctrlTabCtrl.ShowTab(IDC_IN_CHANGELIST-1,true); this->m_ctrlTabCtrl.ShowTab(IDC_IN_LOGLIST-1,true); this->AddDiffFileList(&m_InChangeFileList,&m_arInChangeList,newhash,oldhash); m_InLogList.FillGitLog(NULL,CGit:: LOG_INFO_STAT| CGit::LOG_INFO_FILESTATE | CGit::LOG_INFO_SHOW_MERGEDFILE, &oldhash,&newhash); this->FetchOutList(true); } this->m_ctrlTabCtrl.ShowTab(IDC_CMD_LOG-1,true); if(err) { this->ShowTab(IDC_CMD_LOG); } else { this->ShowTab(IDC_IN_LOGLIST); } } }