SccGet – funkce
Tato funkce načte kopii jednoho nebo více souborů pro prohlížení a kompilaci, ale ne pro úpravy. Ve většině systémů jsou soubory označené jako jen pro čtení.
Syntaxe
SCCRTN SccGet(
LPVOID pvContext,
HWND hWnd,
LONG nFiles,
LPCSTR* lpFileNames,
LONG fOptions,
LPCMDOPTS pvOptions
);
Parametry
pvContext
[v] Kontextová struktura modulu plug-in správy zdrojového kódu.
Hwnd
[v] Popisovač okna integrovaného vývojového prostředí(IDE), které modul plug-in správy zdrojového kódu může použít jako nadřazený prvek pro všechna dialogová okna, která poskytuje.
nSoubory
[v] Počet souborů zadaných lpFileNames
v poli
lpFileNames
[v] Pole plně kvalifikovaných názvů souborů, které se mají načíst.
FOptions
[v] Příznaky příkazů (SCC_GET_ALL
, SCC_GET_RECURSIVE
).
pvOptions
[v] Možnosti modulu plug-in správy zdrojového kódu
Vrácená hodnota
Očekává se, že implementace modulu plug-in správy zdrojového kódu této funkce vrátí jednu z následujících hodnot:
Hodnota | Popis |
---|---|
SCC_OK | Úspěch operace získání |
SCC_E_FILENOTCONTROLLED | Soubor není pod správou zdrojového kódu. |
SCC_E_OPNOTSUPPORTED | Systém správy zdrojového kódu tuto operaci nepodporuje. |
SCC_E_FILEISCHECKEDOUT | Nelze získat soubor, který si uživatel právě rezervoval. |
SCC_E_ACCESSFAILURE | Při přístupu k systému správy zdrojového kódu došlo k potížím, pravděpodobně kvůli problémům se sítí nebo kolizí. Doporučuje se opakování. |
SCC_E_NOSPECIFIEDVERSION | Zadali jste neplatnou verzi nebo datum a čas. |
SCC_E_NONSPECIFICERROR | Nespecifické selhání; soubor nebyl synchronizován. |
SCC_I_OPERATIONCANCELED | Operace byla zrušena před dokončením. |
SCC_E_NOTAUTHORIZED | Uživatel nemá oprávnění k provedení této operace. |
Poznámky
Tato funkce se volá s počtem a polem názvů souborů, které se mají načíst. Pokud integrované vývojové prostředí předává příznak SCC_GET_ALL
, znamená to, že položky v lpFileNames
souborech nejsou, ale adresáře a že se načtou všechny soubory pod správou zdrojového kódu v daných adresářích.
Příznak SCC_GET_ALL
lze kombinovat s příznakem SCC_GET_RECURSIVE
pro načtení všech souborů v daných adresářích a všech podadresářích.
Poznámka:
SCC_GET_RECURSIVE
by nikdy neměla být předána bez SCC_GET_ALL
. Všimněte si také, že pokud jsou adresáře C:\A a C:\A\B předány rekurzivním get, C:\A\B a všechny jeho podadresáře se ve skutečnosti načtou dvakrát. Je to zodpovědnost integrovaného vývojového prostředí (a ne modul plug-in správy zdrojového kódu), aby se zajistilo, že duplicity, jako je tato, jsou mimo pole.
A konečně, i když modul plug-in správy zdrojového kódu určil SCC_CAP_GET_NOUI
příznak při inicializaci, což znamená, že nemá uživatelské rozhraní pro příkaz Get, může tato funkce stále volat integrované vývojové prostředí pro načtení souborů. Příznak jednoduše znamená, že integrované vývojové prostředí (IDE) nezobrazuje položku nabídky Get a že modul plug-in nemá poskytovat žádné uživatelské rozhraní.
Přejmenování souborů a SccGet
Situace: Uživatel si soubor vyhledá, například a.txt, a upraví ho. Před vrácením souboru a.txt se druhý uživatel přejmenuje na b.txt v databázi správy zdrojového kódu, zkontroluje b.txt, provede určité úpravy souboru a zkontroluje soubor v souboru. První uživatel chce změny provedené druhým uživatelem, aby první uživatel přejmenoval místní verzi souboru a.txt na b.txt a získá soubor. Místní mezipaměť, která sleduje čísla verzí, si ale stále myslí, že první verze souboru a.txt je uložená místně, takže správa zdrojového kódu nemůže tyto rozdíly vyřešit.
Existují dva způsoby, jak tuto situaci vyřešit, když se místní mezipaměť verzí správy zdrojového kódu přestane synchronizovat s databází správy zdrojového kódu:
Nepovolujte přejmenování souboru v databázi správy zdrojového kódu, která je aktuálně rezervována.
Proveďte ekvivalent "odstranit starý" následovaný textem "add new". Jedním ze způsobů, jak toho dosáhnout, je následující algoritmus.
Zavolejte funkci SccQueryChanges, abyste se dozvěděli o přejmenování souboru a.txt na b.txt v databázi správy zdrojového kódu.
Přejmenujte místní soubor a.txt na b.txt.
SccGet
Volání funkce pro a.txt i b.txt.Protože soubor a.txt v databázi správy zdrojového kódu neexistuje, mezipaměť místní verze se vymaže z chybějících informací o verzi a.txt .
Rezervovaný soubor b.txt se sloučí s obsahem místního souboru b.txt .
Aktualizovaný soubor b.txt je teď možné vrátit se změnami.