\r
CString GetCacheID();\r
\r
+\r
+typedef enum git_node_kind_t\r
+{\r
+ git_node_none,\r
+ git_node_file,\r
+ git_node_dir,\r
+ git_node_unknown,\r
+\r
+}git_node_kind;\r
+\r
+\r
/**\r
* \ingroup TSVNCache\r
* A structure passed as a request from the shell (or other client) to the external cache\r
{\r
git_wc_status2_t m_status;\r
// svn_wc_entry_t m_entry;\r
-// svn_node_kind_t m_kind;\r
+ git_node_kind_t m_kind;\r
char m_url[INTERNET_MAX_URL_LENGTH+1];\r
char m_owner[255]; ///< owner of the lock\r
char m_author[255];\r
m_currentStatusFetchingPathTicks = GetTickCount();\r
}\r
ATLTRACE(_T("svn_cli_stat for '%s' (req %s)\n"), m_directoryPath.GetWinPath(), path.GetWinPath());\r
- git_error_t* pErr;\r
-#if 0\r
- = svn_client_status4 (\r
+\r
+ BOOL pErr = 0;//!wgEnumFiles(CStringA(sProjectRoot), lpszSubPath, WGEFF_NoRecurse|WGEFF_FullPath|WGEFF_DirStatusAll, &fillstatusmap, this);\r
+\r
+ /*git_error_t* pErr = svn_client_status4 (\r
NULL,\r
m_directoryPath.GetSVNApiPath(subPool),\r
&revision,\r
NULL, //changelists\r
CGitStatusCache::Instance().m_svnHelp.ClientContext(),\r
subPool\r
- );\r
-#endif\r
+ );*/\r
{\r
AutoLocker pathlock(m_critSecPath);\r
m_currentStatusFetchingPath.Reset();\r
TCHAR path2[MAX_PATH];\r
if (SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, path)==S_OK)\r
{\r
- _tcscat_s(path, MAX_PATH, _T("\\TSVNCache"));\r
+ _tcscat_s(path, MAX_PATH, _T("\\TGitCache"));\r
if (!PathIsDirectory(path))\r
{\r
if (CreateDirectory(path, NULL)==0)\r
TCHAR path[MAX_PATH]; //MAX_PATH ok here.\r
if (SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, path)==S_OK)\r
{\r
- _tcscat_s(path, MAX_PATH, _T("\\TSVNCache"));\r
+ _tcscat_s(path, MAX_PATH, _T("\\TGitCache"));\r
if (!PathIsDirectory(path))\r
CreateDirectory(path, NULL);\r
_tcscat_s(path, MAX_PATH, _T("\\cache"));\r
CStatusCacheEntry::CStatusCacheEntry()\r
: m_bSet(false)\r
, m_bSVNEntryFieldSet(false)\r
-// , m_kind(svn_node_unknown)\r
+ , m_kind(git_node_unknown)\r
, m_bReadOnly(false)\r
, m_highestPriorityLocalStatus(git_wc_status_none)\r
{\r
CStatusCacheEntry::CStatusCacheEntry(const git_wc_status2_t* pGitStatus, __int64 lastWriteTime, bool bReadOnly, DWORD validuntil /* = 0*/)\r
: m_bSet(false)\r
, m_bSVNEntryFieldSet(false)\r
-// , m_kind(svn_node_unknown)\r
+ , m_kind(git_node_unknown)\r
, m_bReadOnly(false)\r
, m_highestPriorityLocalStatus(git_wc_status_none)\r
{\r
WRITESTRINGTOFILE(m_sUrl);\r
WRITESTRINGTOFILE(m_sOwner);\r
WRITESTRINGTOFILE(m_sAuthor);\r
-// WRITEVALUETOFILE(m_kind);\r
+ WRITEVALUETOFILE(m_kind);\r
WRITEVALUETOFILE(m_bReadOnly);\r
WRITESTRINGTOFILE(m_sPresentProps);\r
\r
// now save the status struct (without the entry field, because we don't use that) WRITEVALUETOFILE(m_GitStatus.copied);\r
// WRITEVALUETOFILE(m_GitStatus.locked);\r
-// WRITEVALUETOFILE(m_GitStatus.prop_status);\r
+ WRITEVALUETOFILE(m_GitStatus.prop_status);\r
// WRITEVALUETOFILE(m_GitStatus.repos_prop_status);\r
// WRITEVALUETOFILE(m_GitStatus.repos_text_status);\r
// WRITEVALUETOFILE(m_GitStatus.switched);\r
-// WRITEVALUETOFILE(m_GitStatus.text_status);\r
+ WRITEVALUETOFILE(m_GitStatus.text_status);\r
return true;\r
}\r
\r
}\r
m_sAuthor.ReleaseBuffer(value);\r
}\r
-// LOADVALUEFROMFILE(m_kind);\r
+ LOADVALUEFROMFILE(m_kind);\r
LOADVALUEFROMFILE(m_bReadOnly);\r
LOADVALUEFROMFILE(value);\r
if (value != 0)\r
SecureZeroMemory(&m_GitStatus, sizeof(m_GitStatus));\r
// LOADVALUEFROMFILE(m_GitStatus.copied);\r
// LOADVALUEFROMFILE(m_GitStatus.locked);\r
-// LOADVALUEFROMFILE(m_GitStatus.prop_status);\r
+ LOADVALUEFROMFILE(m_GitStatus.prop_status);\r
// LOADVALUEFROMFILE(m_GitStatus.repos_prop_status);\r
// LOADVALUEFROMFILE(m_GitStatus.repos_text_status);\r
// LOADVALUEFROMFILE(m_GitStatus.switched);\r
-// LOADVALUEFROMFILE(m_GitStatus.text_status);\r
+ LOADVALUEFROMFILE(m_GitStatus.text_status);\r
// m_GitStatus.entry = NULL;\r
m_discardAtTime = GetTickCount()+cachetimeout;\r
}\r
// response.m_status.entry = NULL;\r
// response.m_entry.url = NULL;\r
\r
-// response.m_kind = m_kind;\r
+ response.m_kind = m_kind;\r
response.m_readonly = m_bReadOnly;\r
\r
if (m_sPresentProps.Find("svn:needs-lock")>=0)\r
#define CACHETIMEOUT 0x7FFFFFFF\r
extern DWORD cachetimeout;\r
\r
-#include "GitStatus.h"\r
+#include "CacheInterface.h"\r
\r
/**\r
* \ingroup TSVNCache\r
bool DoesFileTimeMatch(__int64 testTime) const;\r
bool ForceStatus(git_wc_status_kind forcedStatus);\r
git_wc_status_kind GetEffectiveStatus() const { return m_highestPriorityLocalStatus; }\r
- bool IsKindKnown() const { return true;/*((m_kind != git_node_none)&&(m_kind != git_node_unknown));*/ }\r
+ bool IsKindKnown() const { return ((m_kind != git_node_none)&&(m_kind != git_node_unknown)); }\r
void SetStatus(const git_wc_status2_t* pGitStatus);\r
bool HasBeenSet() const;\r
void Invalidate();\r
- bool IsDirectory() const {return true; /*((m_kind == git_node_dir)&&(m_highestPriorityLocalStatus != git_wc_status_ignored));*/}\r
+ bool IsDirectory() const { return ((m_kind == git_node_dir)&&(m_highestPriorityLocalStatus != git_wc_status_ignored)); }\r
bool SaveToDisk(FILE * pFile);\r
bool LoadFromDisk(FILE * pFile);\r
-// void SetKind(git_node_kind_t kind) {m_kind = kind;}\r
+ void SetKind(git_node_kind_t kind) {m_kind = kind;}\r
private:\r
void SetAsUnversioned();\r
\r
git_wc_status2_t m_GitStatus;\r
__int64 m_lastWriteTime;\r
bool m_bSet;\r
-// git_node_kind_t m_kind;\r
+ git_node_kind_t m_kind;\r
bool m_bReadOnly;\r
\r
// Values copied from the 'entries' structure\r
CStringA m_sPresentProps;\r
git_revnum_t m_commitRevision;\r
\r
-// friend class CGitStatusCache;\r
+ friend class CGitStatusCache;\r
};\r
\r
#pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")\r
\r
-CCrashReport crasher("tortoisegit-bug@googlegroups.com", "Crash Report for TSVNCache " APP_X64_STRING " : " STRPRODUCTVER, TRUE);// crash\r
+CCrashReport crasher("tortoisegit-bug@googlegroups.com", "Crash Report for TGitCache " APP_X64_STRING " : " STRPRODUCTVER, TRUE);// crash\r
\r
DWORD WINAPI InstanceThread(LPVOID); \r
DWORD WINAPI PipeThread(LPVOID);\r
}\r
\r
// Display the string.\r
- OutputDebugStringA("TSVNCache GetLastError(): ");\r
+ OutputDebugStringA("TGitCache GetLastError(): ");\r
OutputDebugString((LPCTSTR)lpMsgBuf);\r
OutputDebugStringA("\n");\r
\r
\r
if (hReloadProtection == 0 || GetLastError() == ERROR_ALREADY_EXISTS)\r
{\r
- // An instance of TSVNCache is already running\r
- ATLTRACE("TSVNCache ignoring restart\n");\r
+ // An instance of TGitCache is already running\r
+ ATLTRACE("TGitCache ignoring restart\n");\r
return 0;\r
}\r
\r
>\r
</File>\r
<File\r
- RelativePath="..\Utils\PathUtils.h"\r
+ RelativePath="..\Git\GitAdminDir.h"\r
>\r
</File>\r
<File\r
- RelativePath="..\Utils\registry.h"\r
+ RelativePath="..\Git\GitStatus.h"\r
>\r
</File>\r
<File\r
- RelativePath=".\resource.h"\r
+ RelativePath=".\GitStatusCache.h"\r
>\r
</File>\r
<File\r
- RelativePath="..\Utils\RWSection.h"\r
+ RelativePath="..\Utils\PathUtils.h"\r
>\r
</File>\r
<File\r
- RelativePath="..\TortoiseShell\ShellCache.h"\r
+ RelativePath="..\Utils\registry.h"\r
>\r
</File>\r
<File\r
- RelativePath=".\ShellUpdater.h"\r
+ RelativePath=".\resource.h"\r
>\r
</File>\r
<File\r
- RelativePath=".\StatusCacheEntry.h"\r
+ RelativePath="..\Utils\RWSection.h"\r
>\r
</File>\r
<File\r
- RelativePath=".\stdafx.h"\r
+ RelativePath="..\TortoiseShell\ShellCache.h"\r
>\r
</File>\r
<File\r
- RelativePath="..\Svn\SVNAdminDir.h"\r
+ RelativePath=".\ShellUpdater.h"\r
>\r
</File>\r
<File\r
- RelativePath="..\SVN\SVNGlobal.h"\r
+ RelativePath=".\StatusCacheEntry.h"\r
>\r
</File>\r
<File\r
- RelativePath="..\Svn\SVNHelpers.h"\r
+ RelativePath=".\stdafx.h"\r
>\r
</File>\r
<File\r
- RelativePath="..\Svn\SVNStatus.h"\r
+ RelativePath="..\Git\TGitPath.h"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath="..\Svn\TSVNPath.h"\r
- >\r
- </File>\r
- <File\r
RelativePath="..\Utils\UnicodeUtils.h"\r
>\r
</File>\r
#include "PreserveChdir.h"\r
#include "UnicodeUtils.h"\r
#include "GitStatus.h"\r
-//#include "..\TSVNCache\CacheInterface.h"\r
+#include "..\TGitCache\CacheInterface.h"\r
\r
// "The Shell calls IShellIconOverlayIdentifier::GetOverlayInfo to request the\r
// location of the handler's icon overlay. The icon overlay handler returns\r
#include "StdAfx.h"\r
#include "Remotecachelink.h"\r
#include "ShellExt.h"\r
-//#include "..\TSVNCache\CacheInterface.h"\r
-//#include "TSVNPath.h"\r
+#include "..\TGitCache\CacheInterface.h"\r
+#include "TGitPath.h"\r
#define GetCachePipeName() _T("HH")\r
#define GetCacheCommandPipeName() _T("CC")\r
\r
: m_hPipe(INVALID_HANDLE_VALUE)\r
, m_hCommandPipe(INVALID_HANDLE_VALUE)\r
{\r
-// SecureZeroMemory(&m_dummyStatus, sizeof(m_dummyStatus));\r
-// m_dummyStatus.text_status = svn_wc_status_none;\r
-// m_dummyStatus.prop_status = svn_wc_status_none;\r
-// m_dummyStatus.repos_text_status = svn_wc_status_none;\r
-// m_dummyStatus.repos_prop_status = svn_wc_status_none;\r
+ SecureZeroMemory(&m_dummyStatus, sizeof(m_dummyStatus));\r
+ m_dummyStatus.text_status = git_wc_status_none;\r
+ m_dummyStatus.prop_status = git_wc_status_none;\r
+// m_dummyStatus.repos_text_status = git_wc_status_none;\r
+// m_dummyStatus.repos_prop_status = git_wc_status_none;\r
m_lastTimeout = 0;\r
m_critSec.Init();\r
}\r
{\r
// now tell the cache we don't need it's command thread anymore\r
DWORD cbWritten; \r
-/* TSVNCacheCommand cmd;\r
+ TSVNCacheCommand cmd;\r
SecureZeroMemory(&cmd, sizeof(TSVNCacheCommand));\r
cmd.command = TSVNCACHECOMMAND_END;\r
WriteFile( \r
DisconnectNamedPipe(m_hCommandPipe); \r
CloseHandle(m_hCommandPipe); \r
m_hCommandPipe = INVALID_HANDLE_VALUE;\r
-*/\r
}\r
}\r
\r
-bool CRemoteCacheLink::GetStatusFromRemoteCache(const CTSVNPath& Path, TSVNCacheResponse* pReturnedStatus, bool bRecursive)\r
+bool CRemoteCacheLink::GetStatusFromRemoteCache(const CTGitPath& Path, TSVNCacheResponse* pReturnedStatus, bool bRecursive)\r
{\r
if(!EnsurePipeOpen())\r
{\r
startup.cb = sizeof(startup);\r
memset(&process, 0, sizeof(process));\r
\r
- CRegString cachePath(_T("Software\\TortoiseGit\\CachePath"), _T("TSVNCache.exe"), false, HKEY_LOCAL_MACHINE);\r
+ CRegString cachePath(_T("Software\\TortoiseGit\\CachePath"), _T("TGitCache.exe"), false, HKEY_LOCAL_MACHINE);\r
CString sCachePath = cachePath;\r
if (CreateProcess(sCachePath.GetBuffer(sCachePath.GetLength()+1), _T(""), NULL, NULL, FALSE, 0, 0, 0, &startup, &process)==0)\r
{\r
\r
if (fSuccess)\r
{\r
- if(nBytesRead == sizeof(TSVNCacheResponse))\r
+/* if(nBytesRead == sizeof(TSVNCacheResponse))\r
{\r
// This is a full response - we need to fix-up some pointers\r
pReturnedStatus->m_status.entry = &pReturnedStatus->m_entry;\r
{\r
pReturnedStatus->m_status.entry = NULL;\r
}\r
-\r
+*/\r
return true;\r
}\r
ClosePipe();\r
return false;\r
}\r
\r
-bool CRemoteCacheLink::ReleaseLockForPath(const CTSVNPath& path)\r
+bool CRemoteCacheLink::ReleaseLockForPath(const CTGitPath& path)\r
{\r
EnsureCommandPipeOpen();\r
if (m_hCommandPipe != INVALID_HANDLE_VALUE) \r
#pragma once\r
\r
struct TSVNCacheResponse;\r
-class CTSVNPath;\r
+class CTGitPath;\r
+\r
+#include "GitStatus.h"\r
\r
/**\r
* \ingroup TortoiseShell\r
class CRemoteCacheLink\r
{\r
public:\r
- CRemoteCacheLink(void){};\r
- ~CRemoteCacheLink(void){};\r
+ CRemoteCacheLink(void);\r
+ ~CRemoteCacheLink(void);\r
\r
public:\r
- bool GetStatusFromRemoteCache(const CTSVNPath& Path, TSVNCacheResponse* pReturnedStatus, bool bRecursive);\r
- bool ReleaseLockForPath(const CTSVNPath& path);\r
+ bool GetStatusFromRemoteCache(const CTGitPath& Path, TSVNCacheResponse* pReturnedStatus, bool bRecursive);\r
+ bool ReleaseLockForPath(const CTGitPath& path);\r
\r
private:\r
bool EnsurePipeOpen();\r
\r
\r
CComCriticalSection m_critSec;\r
-// git_wc_status2_t m_dummyStatus;\r
+ git_wc_status2_t m_dummyStatus;\r
long m_lastTimeout;\r
\r
};\r
>\r
</File>\r
<File\r
+ RelativePath=".\RemoteCacheLink.cpp"\r
+ >\r
+ </File>\r
+ <File\r
RelativePath=".\ShellExt.cpp"\r
>\r
</File>\r