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:

  1. Das Umbenennen einer Datei in der Zurzeit ausgecheckten Quellcodeverwaltungsdatenbank nicht zulassen.

  2. Führen Sie die Entsprechung "alt löschen" gefolgt von "Neu hinzufügen" aus. Der folgende Algorithmus ist eine Möglichkeit, dies zu erreichen.

    1. Rufen Sie die Funktion SccQueryChanges auf, um mehr über die Umbenennung von a.txt in b.txt in der Quellcodeverwaltungsdatenbank zu erfahren.

    2. Benennen Sie die lokale a.txt in "b.txt" um.

    3. Rufen Sie die SccGet Funktion für a.txt und b.txt auf.

    4. Da a.txt in der Quellcodeverwaltungsdatenbank nicht vorhanden ist, wird der lokale Versionscache aus den fehlenden a.txt-Versionsinformationen gelöscht.

    5. Die ausgecheckte b.txt-Datei wird mit dem Inhalt der lokalen b.txt-Datei zusammengeführt.

    6. Die aktualisierte b.txt-Datei kann jetzt eingecheckt werden.

Siehe auch