SccGet-Funktion
Diese Funktion ruft eine Kopie einer oder mehrerer Dateien zum Anzeigen und Kompilieren, aber nicht zum Bearbeiten ab. In den meisten Systemen werden die Dateien schreibgeschützt markiert.
Syntax
SCCRTN SccGet(
LPVOID pvContext,
HWND hWnd,
LONG nFiles,
LPCSTR* lpFileNames,
LONG fOptions,
LPCMDOPTS pvOptions
);
Parameter
pvContext
[in] Die Kontextstruktur des Quellcodeverwaltungs-Plug-Ins.
hWnd
[in] Ein Handle für das IDE-Fenster, das das Quellcodeverwaltungs-Plug-In als übergeordnetes Element für alle von ihr bereitgestellten Dialogfelder verwenden kann.
nFiles
[in] Die Anzahl der im lpFileNames
Array angegebenen Dateien.
lpFileNames
[in] Array von vollqualifizierten Namen von Dateien, die abgerufen werden sollen.
Foptions
[in] Befehlskennzeichnungen (SCC_GET_ALL
, SCC_GET_RECURSIVE
).
pvOptions
[in] Plug-In-spezifische Optionen für die Quellcodeverwaltung.
Rückgabewert
Die Plug-In-Implementierung dieser Funktion für die Quellcodeverwaltung wird voraussichtlich einen der folgenden Werte zurückgeben:
Wert | Beschreibung |
---|---|
SCC_OK | Erfolg des Get-Vorgangs. |
SCC_E_FILENOTCONTROLLED | Die Datei befindet sich nicht unter der Quellcodeverwaltung. |
SCC_E_OPNOTSUPPORTED | Das Quellcodeverwaltungssystem unterstützt diesen Vorgang nicht. |
SCC_E_FILEISCHECKEDOUT | Die Datei, die der Benutzer aktuell ausgecheckt hat, kann nicht abgerufen werden. |
SCC_E_ACCESSFAILURE | Es gab ein Problem beim Zugriff auf das Quellcodeverwaltungssystem, wahrscheinlich aufgrund von Netzwerk- oder Inhaltsproblemen. Es wird ein Wiederholungsversuche empfohlen. |
SCC_E_NOSPECIFIEDVERSION | Es wurde eine ungültige Version oder ein ungültiges Datum/eine ungültige Uhrzeit angegeben. |
SCC_E_NONSPECIFICERROR | Nicht spezifischer Fehler; Die Datei wurde nicht synchronisiert. |
SCC_I_OPERATIONCANCELED | Der Vorgang wurde vor Abschluss abgebrochen. |
SCC_E_NOTAUTHORIZED | Der Benutzer ist nicht berechtigt, diesen Vorgang auszuführen. |
Hinweise
Diese Funktion wird mit einer Anzahl und einem Array von Namen der abzurufenden Dateien aufgerufen. Wenn die IDE das Flag SCC_GET_ALL
übergibt, bedeutet dies, dass die Elemente lpFileNames
nicht Dateien, sondern Verzeichnisse sind und dass alle Dateien unter Quellcodeverwaltung in den angegebenen Verzeichnissen abgerufen werden sollen.
Das SCC_GET_ALL
Kennzeichen kann mit der SCC_GET_RECURSIVE
Kennzeichnung kombiniert werden, um alle Dateien in den angegebenen Verzeichnissen und allen Unterverzeichnissen abzurufen.
Hinweis
SCC_GET_RECURSIVE
sollte niemals ohne SCC_GET_ALL
übergeben werden. Beachten Sie außerdem, dass, wenn die Verzeichnisse C:\A und C:\A\B beide an einen rekursiven Get übergeben werden, C:\A\B und alle unterverzeichnisse tatsächlich zweimal abgerufen werden. Es liegt in der Verantwortung der IDE – und nicht des Quellcodeverwaltungs-Plug-Ins – um sicherzustellen, dass Duplikate wie dies aus dem Array herausgehalten werden.
Selbst wenn ein Quellcodeverwaltungs-Plug-In das Flag bei der SCC_CAP_GET_NOUI
Initialisierung angegeben hat und angibt, dass es keine Benutzeroberfläche für einen Get-Befehl hat, wird diese Funktion möglicherweise weiterhin von der IDE aufgerufen, um Dateien abzurufen. Das Flag bedeutet einfach, dass die IDE kein Get-Menüelement anzeigt und dass das Plug-In keine Benutzeroberfläche bereitstellen soll.
Umbenennen von Dateien und SccGet
Situation: Ein Benutzer checkt eine Datei aus, z. B. a.txt, und ändert sie. Bevor a.txt eingecheckt werden kann, benennt ein zweiter Benutzer a.txt in b.txt in der Quellcodeverwaltungsdatenbank um, checkt b.txt aus, nimmt einige Änderungen an der Datei vor und überprüft die Datei. Der erste Benutzer möchte die vom zweiten Benutzer vorgenommenen Änderungen, sodass der erste Benutzer seine lokale Version der Datei a.txt in "b.txt" umbenennt und die Datei erhält. Der lokale Cache, der die Versionsnummern nachverfolgt, denkt jedoch weiterhin, dass die erste Version von a.txt lokal gespeichert wird und die Quellcodeverwaltung die Unterschiede nicht auflösen kann.
Es gibt zwei Möglichkeiten, diese Situation zu beheben, in der der lokale Cache der Quellcodeverwaltungsversionen mit der Quellcodeverwaltungsdatenbank nicht mehr synchronisiert wird:
Das Umbenennen einer Datei in der Zurzeit ausgecheckten Quellcodeverwaltungsdatenbank nicht zulassen.
Führen Sie die Entsprechung "alt löschen" gefolgt von "Neu hinzufügen" aus. Der folgende Algorithmus ist eine Möglichkeit, dies zu erreichen.
Rufen Sie die Funktion SccQueryChanges auf, um mehr über die Umbenennung von a.txt in b.txt in der Quellcodeverwaltungsdatenbank zu erfahren.
Benennen Sie die lokale a.txt in "b.txt" um.
Rufen Sie die
SccGet
Funktion für a.txt und b.txt auf.Da a.txt in der Quellcodeverwaltungsdatenbank nicht vorhanden ist, wird der lokale Versionscache aus den fehlenden a.txt-Versionsinformationen gelöscht.
Die ausgecheckte b.txt-Datei wird mit dem Inhalt der lokalen b.txt-Datei zusammengeführt.
Die aktualisierte b.txt-Datei kann jetzt eingecheckt werden.