#pragma once\r
#include "GitRev.h"\r
#include "GitStatus.h"\r
-\r
+#include "GitAdminDir.h"\r
enum\r
{\r
GIT_SUCCESS=0,\r
};\r
class CGit\r
{\r
+private:\r
+ GitAdminDir m_GitDir;\r
public:\r
\r
CGit(void);\r
CString GetUserName(void);\r
CString GetUserEmail(void);\r
CString GetCurrentBranch(void);\r
+\r
+ bool SetCurrentDir(CString path)\r
+ {\r
+ return m_GitDir.HasAdminDir(path,&m_CurrentDir);\r
+ }\r
CString m_CurrentDir;\r
+ \r
int GetLog(CString& logOut);\r
git_revnum_t GetHash(CString &friendname);\r
\r
#endif\r
return name == ".git";\r
}\r
+CString GitAdminDir::GetGitTopDir(const CString& path) \r
+{\r
+ CString str;\r
+ str=_T("");\r
+ HasAdminDir(path,!!PathIsDirectory(path),&str);\r
+ return str;\r
+}\r
\r
bool GitAdminDir::HasAdminDir(const CString& path) const\r
{\r
return HasAdminDir(path, !!PathIsDirectory(path));\r
}\r
\r
-bool GitAdminDir::HasAdminDir(const CString& path, bool bDir) const\r
+bool GitAdminDir::HasAdminDir(const CString& path,CString *ProjectTopDir) const\r
+{\r
+ return HasAdminDir(path, !!PathIsDirectory(path),ProjectTopDir);\r
+}\r
+\r
+bool GitAdminDir::HasAdminDir(const CString& path, bool bDir,CString *ProjectTopDir) const\r
{\r
if (path.IsEmpty())\r
return false;\r
do\r
{\r
if(PathFileExists(sDirName + _T("\\.git")))\r
+ {\r
+ if(ProjectTopDir)\r
+ *ProjectTopDir=sDirName;\r
return true;\r
+ }\r
sDirName = sDirName.Left(sDirName.ReverseFind('\\'));\r
\r
}while(sDirName.ReverseFind('\\')>0);\r
/// Returns true if the path (file or folder) has an admin directory \r
/// associated, i.e. if the path is in a working copy.\r
bool HasAdminDir(const CString& path) const;\r
- bool HasAdminDir(const CString& path, bool bDir) const;\r
+ bool HasAdminDir(const CString& path,CString * ProjectTopDir=NULL) const;\r
+ bool HasAdminDir(const CString& path, bool bDir,CString * ProjectTopDir=NULL) const;\r
+ CString GetGitTopDir(const CString& path);\r
\r
/// Returns true if the admin dir name is set to "_svn".\r
bool IsVSNETHackActive() const {return m_bVSNETHack;}\r
{\r
Reset();\r
// Just set whichever path we think is most likely to be used\r
- SetFwdslashPath(sPath);\r
+// GitAdminDir admin;\r
+// CString p;\r
+// if(admin.HasAdminDir(sPath,&p))\r
+// SetFwdslashPath(sPath.Right(sPath.GetLength()-p.GetLength()));\r
+// else\r
+ SetFwdslashPath(sPath);\r
}\r
\r
LPCTSTR CTGitPath::GetWinPath() const\r
<Publish Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>\r
</Control>\r
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="[ButtonText_Next]">\r
- <Publish Event="SetTargetPath" Value="TARGETDIR">1</Publish>\r
- <Publish Event="NewDialog" Value="VerifyReadyDlg">1</Publish>\r
+ <Publish Event="SetTargetPath" Value="MSYSGITDIR">1</Publish>\r
+ <Publish Event="NewDialog" Value="CustomizeDlg">1</Publish>\r
</Control>\r
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="[ButtonText_Cancel]">\r
<Publish Event="SpawnDialog" Value="CancelPopup">1</Publish>\r
</Control>\r
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="[ButtonText_Next]">\r
<Publish Event="SpawnWaitDialog" Value="WaitForCostingPopup">CostingComplete = 1</Publish>\r
- <Publish Event="NewDialog" Value="MSysGitLocation">"Yes"</Publish>\r
+ <Publish Event="NewDialog" Value="CustomizeDlg">"Yes"</Publish>\r
<Publish Property="InstallMode" Value="Custom">1</Publish>\r
<Condition Action="disable"><![CDATA[IAgree <> "Yes"]]></Condition>\r
<Condition Action="enable">IAgree = "Yes"</Condition>\r
\r
#include "CreateRepositoryCommand.h"\r
#include "CloneCommand.h"\r
+#include "PrevDiffCommand.h"\r
+#include "DiffCommand.h"\r
\r
#if 0\r
#include "AddCommand.h"\r
#include "CreatePatchCommand.h"\r
\r
#include "DelUnversionedCommand.h"\r
-#include "DiffCommand.h"\r
+\r
#include "DropCopyAddCommand.h"\r
#include "DropCopyCommand.h"\r
#include "DropExportCommand.h"\r
#include "MergeAllCommand.h"\r
#include "PasteCopyCommand.h"\r
#include "PasteMoveCommand.h"\r
-#include "PrevDiffCommand.h"\r
+\r
#include "PropertiesCommand.h"\r
#include "RebuildIconCacheCommand.h"\r
#include "RelocateCommand.h"\r
return new CreateRepositoryCommand;\r
case cmdClone:\r
return new CloneCommand;\r
+ case cmdPrevDiff:\r
+ return new PrevDiffCommand;\r
+ case cmdDiff:\r
+ return new DiffCommand;\r
#if 0\r
case cmdAdd:\r
return new AddCommand;\r
return new CreatePatchCommand;\r
case cmdDelUnversioned:\r
return new DelUnversionedCommand;\r
- case cmdDiff:\r
- return new DiffCommand;\r
+\r
case cmdDropCopy:\r
return new DropCopyCommand;\r
case cmdDropCopyAdd:\r
return new UrlDiffCommand;\r
#endif\r
default:\r
+ CMessageBox::Show(hWndExplorer, _T("Have not implemented"), _T("TortoiseGit"), MB_ICONERROR);\r
return new AboutCommand;\r
}\r
}\r
virtual bool Execute() = 0;\r
\r
void SetParser(const CCmdLineParser& p) {parser = p;}\r
- void SetPaths(const CTGitPathList& plist, const CTGitPath path) {pathList = plist; cmdLinePath = path;}\r
+ void SetPaths(const CTGitPathList& plist, const CTGitPath path) \r
+ { \r
+ CString WinPath=path.GetWinPath();\r
+ if(WinPath.Left(g_Git.m_CurrentDir.GetLength())==g_Git.m_CurrentDir)\r
+ cmdLinePath.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()-1));\r
+\r
+ pathList = plist; \r
+ }\r
void SetExplorerHwnd(HWND hWnd) {hwndExplorer = hWnd;}\r
protected:\r
CCmdLineParser parser;\r
#include "DiffCommand.h"\r
#include "PathUtils.h"\r
#include "AppUtils.h"\r
-#include "ChangedDlg.h"\r
-#include "SVNDiff.h"\r
-#include "SVNStatus.h"\r
+//#include "ChangedDlg.h"\r
+#include "GitDiff.h"\r
+#include "GitStatus.h"\r
\r
bool DiffCommand::Execute()\r
{\r
{\r
if (cmdLinePath.IsDirectory())\r
{\r
- CChangedDlg dlg;\r
- dlg.m_pathList = CTSVNPathList(cmdLinePath);\r
- dlg.DoModal();\r
- bRet = true;\r
+ //CChangedDlg dlg;\r
+ //dlg.m_pathList = CTSVNPathList(cmdLinePath);\r
+ //dlg.DoModal();\r
+ //bRet = true;\r
}\r
else\r
{\r
- SVNDiff diff(NULL, hwndExplorer);\r
- diff.SetAlternativeTool(bAlternativeTool);\r
+ CGitDiff diff;\r
+ //diff.SetAlternativeTool(bAlternativeTool);\r
if ( parser.HasKey(_T("startrev")) && parser.HasKey(_T("endrev")) )\r
{\r
- SVNRev StartRevision = SVNRev(parser.GetLongVal(_T("startrev")));\r
- SVNRev EndRevision = SVNRev(parser.GetLongVal(_T("endrev")));\r
- bRet = diff.ShowCompare(cmdLinePath, StartRevision, cmdLinePath, EndRevision, SVNRev(), false, bBlame);\r
+ //SVNRev StartRevision = SVNRev(parser.GetLongVal(_T("startrev")));\r
+ //SVNRev EndRevision = SVNRev(parser.GetLongVal(_T("endrev")));\r
+ //bRet = diff.ShowCompare(cmdLinePath, StartRevision, cmdLinePath, EndRevision, SVNRev(), false, bBlame);\r
}\r
else\r
{\r
- svn_revnum_t baseRev = 0;\r
- bRet = diff.DiffFileAgainstBase(cmdLinePath, baseRev);\r
+ //svn_revnum_t baseRev = 0;\r
+ bRet = diff.Diff(&cmdLinePath,git_revnum_t(_T("HEAD")),git_revnum_t(GIT_REV_ZERO));\r
}\r
}\r
} \r
else\r
bRet = CAppUtils::StartExtDiff(\r
- CTSVNPath(path2), cmdLinePath, CString(), CString(),\r
+ path2, cmdLinePath.GetWinPathString(), CString(), CString(),\r
CAppUtils::DiffFlags().AlternativeTool(bAlternativeTool));\r
return bRet;\r
}
\ No newline at end of file
//\r
#include "StdAfx.h"\r
#include "PrevDiffCommand.h"\r
-#include "ChangedDlg.h"\r
-#include "SVNDiff.h"\r
-#include "SVNStatus.h"\r
+#include "GitDiff.h"\r
+#include "GitStatus.h"\r
#include "MessageBox.h"\r
\r
bool PrevDiffCommand::Execute()\r
bool bAlternativeTool = !!parser.HasKey(_T("alternative"));\r
if (cmdLinePath.IsDirectory())\r
{\r
- CChangedDlg dlg;\r
- dlg.m_pathList = CTSVNPathList(cmdLinePath);\r
- dlg.DoModal();\r
- bRet = true;\r
+// CChangedDlg dlg;\r
+// dlg.m_pathList = CTSVNPathList(cmdLinePath);\r
+// dlg.DoModal();\r
+// bRet = true;\r
}\r
else\r
{\r
- SVNDiff diff;\r
- diff.SetAlternativeTool(bAlternativeTool);\r
- SVNStatus st;\r
+ CGitDiff diff;\r
+// diff.SetAlternativeTool(bAlternativeTool);\r
+ GitStatus st;\r
st.GetStatus(cmdLinePath);\r
- if (st.status && st.status->entry && st.status->entry->cmt_rev)\r
+\r
+ if (1)\r
{\r
- SVNDiff diff(NULL, hWndExplorer);\r
- bRet = diff.ShowCompare(cmdLinePath, SVNRev::REV_WC, cmdLinePath, st.status->entry->cmt_rev - 1, st.status->entry->cmt_rev);\r
+ CGitDiff diff;\r
+ bRet = diff.Diff(&cmdLinePath, git_revnum_t(_T("HEAD")), git_revnum_t(_T("HEAD~1")), false);\r
}\r
else\r
{\r
- if (st.GetLastErrorMsg().IsEmpty())\r
+ //if (st.GetLastErrorMsg().IsEmpty())\r
{\r
CMessageBox::Show(hWndExplorer, IDS_ERR_NOPREVREVISION, IDS_APPNAME, MB_ICONERROR);\r
}\r
- else\r
- {\r
- CMessageBox::Show(hWndExplorer, IDS_ERR_NOSTATUS, IDS_APPNAME, MB_ICONERROR);\r
- }\r
+ //else\r
+ //{\r
+ // CMessageBox::Show(hWndExplorer, IDS_ERR_NOSTATUS, IDS_APPNAME, MB_ICONERROR);\r
+ //s}\r
}\r
}\r
return bRet;\r
g_Git.RunLogFile(cmd,file1);\r
}else\r
{\r
- file1=pPath->GetWinPathString();\r
+ file1=g_Git.m_CurrentDir+_T("\\")+pPath->GetWinPathString();\r
}\r
\r
CString file2;\r
g_Git.RunLogFile(cmd,file2);\r
}else\r
{\r
- file2=pPath->GetWinPathString();\r
+ file2=g_Git.m_CurrentDir+_T("\\")+pPath->GetWinPathString();\r
}\r
\r
CAppUtils::DiffFlags flags;\r
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));\r
CMFCButton::EnableWindowsTheming();\r
//set the resource dll for the required language\r
- CRegDWORD loc = CRegDWORD(_T("Software\\TortoiseSVN\\LanguageID"), 1033);\r
+ CRegDWORD loc = CRegDWORD(_T("Software\\TortoiseGit\\LanguageID"), 1033);\r
long langId = loc;\r
CString langDll;\r
CStringA langpath = CStringA(CPathUtils::GetAppParentDirectory());\r
sHelppath.Replace(_T("tortoiseproc.chm"), _T("TortoiseSVN_en.chm"));\r
free((void*)m_pszHelpFilePath);\r
m_pszHelpFilePath=_tcsdup(sHelppath);\r
- sHelppath = CPathUtils::GetAppParentDirectory() + _T("Languages\\TortoiseSVN_en.chm");\r
+ sHelppath = CPathUtils::GetAppParentDirectory() + _T("Languages\\TortoiseGit_en.chm");\r
do\r
{\r
CString sLang = _T("_");\r
AfxEnableControlContainer();\r
AfxInitRichEdit2();\r
CWinAppEx::InitInstance();\r
- SetRegistryKey(_T("TortoiseSVN"));\r
+ SetRegistryKey(_T("TortoiseGit"));\r
\r
CCmdLineParser parser(AfxGetApp()->m_lpCmdLine);\r
\r
// if HKCU\Software\TortoiseSVN\Debug is not 0, show our command line\r
// in a message box\r
- if (CRegDWORD(_T("Software\\TortoiseSVN\\Debug"), FALSE)==TRUE)\r
+ if (CRegDWORD(_T("Software\\TortoiseGit\\Debug"), FALSE)==TRUE)\r
AfxMessageBox(AfxGetApp()->m_lpCmdLine, MB_OK | MB_ICONINFORMATION);\r
\r
if ( parser.HasKey(_T("path")) && parser.HasKey(_T("pathfile")))\r
{\r
\r
CString sPathfileArgument = CPathUtils::GetLongPathname(parser.GetVal(_T("pathfile")));\r
+\r
cmdLinePath.SetFromUnknown(sPathfileArgument);\r
if (pathList.LoadFromFile(cmdLinePath)==false)\r
return FALSE; // no path specified!\r
if (cmd)\r
{\r
cmd->SetExplorerHwnd(hWndExplorer);\r
+ \r
+ if(!g_Git.SetCurrentDir(cmdLinePath.GetWinPathString()))\r
+ {\r
+ int i=0;\r
+ for(i=0;i<pathList.GetCount();i++)\r
+ if(g_Git.SetCurrentDir(pathList[i].GetWinPath()))\r
+ break;\r
+ }\r
+\r
cmd->SetParser(parser);\r
cmd->SetPaths(pathList, cmdLinePath);\r
+\r
retSuccess = cmd->Execute();\r
delete cmd;\r
}\r
>\r
</File>\r
</Filter>\r
+ <Filter\r
+ Name="PrevDiff"\r
+ >\r
+ <File\r
+ RelativePath=".\Commands\PrevDiffCommand.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\Commands\PrevDiffCommand.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Diff"\r
+ >\r
+ <File\r
+ RelativePath=".\Commands\DiffCommand.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\Commands\DiffCommand.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
</Filter>\r
<Filter\r
Name="Utility Dialogs"\r
<DebugSettings\r
Command="$(TargetPath)"\r
WorkingDirectory="D:\Profiles\b20596\tortoisegit"\r
- CommandArguments="/command:commit /path:"D:\test2""\r
+ CommandArguments="/command:diff /path:"D:\Profiles\b20596\qgit4\src\cache.cpp""\r
Attach="false"\r
DebuggerType="3"\r
Remote="1"\r