📄 vsstool.cpp
字号:
#include "StdAfx.h"
#include <atlbase.h>
#include "VSSTool.h"
CVSSTool::CVSSTool()
:m_bDBIsOpen(FALSE)
{
HRESULT hr = m_pVSS.CreateInstance(L"SourceSafe");
ASSERT(SUCCEEDED(hr));
}
CVSSTool::CVSSTool(const CString &strVSSIniFile,
const CString &strUserName,
const CString &strVserPass)
:m_bDBIsOpen(FALSE)
{
HRESULT hr = m_pVSS.CreateInstance(L"SourceSafe");
ASSERT(SUCCEEDED(hr));
this->Open(strVSSIniFile, strUserName, strVserPass);
}
CVSSTool::~CVSSTool()
{
}
void CVSSTool::Open(const CString &strVSSIniFile,
const CString &strUserName,
const CString &strVserPass )
{
if (m_pVSS != NULL)
{
_bstr_t bstrVssIniPath = strVSSIniFile.AllocSysString();
_bstr_t bstrUserName = strUserName .AllocSysString();
_bstr_t bstrUserPass = strVserPass .AllocSysString();
m_bDBIsOpen = SUCCEEDED(m_pVSS->Open(bstrVssIniPath, bstrUserName, bstrUserPass));
}
}
BOOL CVSSTool::GetFiles(const CString &strVSSPath,
const CString &strLocalPath)
{
ASSERT(IsValid());
if (!IsValid()) return FALSE;
_bstr_t bstrVSSPath = strVSSPath.AllocSysString();
IVSSItemPtr pItem = m_pVSS->GetVSSItem(bstrVSSPath, FALSE);
if (pItem)
{
CComBSTR bstrLocalPath = strLocalPath.AllocSysString();
pItem->Get(&bstrLocalPath, VSSFLAG_FORCEDIRYES);
return GetVSSItem(strLocalPath, pItem);
}
return FALSE;
}
//
// GetLastVerson
//
BOOL CVSSTool::GetVSSItem(const CString &strLocalPath,
IVSSItemPtr pItem)
{
ASSERT(pItem != NULL);
BOOL bResult = TRUE;
if (pItem->GetType() == VSSITEM_PROJECT) //directory
{
IVSSItemsPtr pItems = pItem->GetItems(FALSE);
for (int i = 1; i <= pItems->GetCount(); i++)
{
IVSSItemPtr pSubItem = pItems->GetItem(CComVariant(i));
ASSERT(pSubItem != NULL);
CString strSubItemName = pSubItem->GetName().copy();
CString strItemLocalPath = strLocalPath + "\\" + strSubItemName;
//recursion
bResult = GetVSSItem(strItemLocalPath, pSubItem) && bResult;
}
}
else //file
{
CComBSTR bstrLocalPath = strLocalPath.AllocSysString();
HRESULT hr = pItem->Get(&bstrLocalPath, VSSFLAG_FORCEDIRYES);
ASSERT(bResult = SUCCEEDED(hr));
}
return bResult;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -