SccGet fonction)SccGet function

Cette fonction récupère une copie d’un ou plusieurs fichiers pour l’affichage et la compilation, mais pas pour la modification.This function retrieves a copy of one or more files for viewing and compiling but not for editing. Dans la plupart des systèmes, les fichiers sont marqués en lecture seule.In most systems, the files are tagged as read-only.

SyntaxeSyntax

SCCRTN SccGet(
   LPVOID    pvContext,
   HWND      hWnd,
   LONG      nFiles,
   LPCSTR*   lpFileNames,
   LONG      fOptions,
   LPCMDOPTS pvOptions
);

ParamètresParameters

pvContextpvContext

dans Structure de contexte du plug-in de contrôle de code source.[in] The context structure of the source control plug-in.

hWndhWnd

dans Handle de la fenêtre IDE que le plug-in de contrôle de code source peut utiliser comme parent pour toutes les boîtes de dialogue qu’il fournit.[in] A handle to the IDE window that the source control plug-in can use as a parent for any dialog boxes that it provides.

NfichiersnFiles

dans Nombre de fichiers spécifiés dans le lpFileNames tableau.[in] Number of files specified in the lpFileNames array.

lpFileNameslpFileNames

dans Tableau de noms qualifiés complets des fichiers à récupérer.[in] Array of fully qualified names of files to be retrieved.

fOptionsfOptions

dans Indicateurs de commande ( SCC_GET_ALL , SCC_GET_RECURSIVE ).[in] Command flags (SCC_GET_ALL, SCC_GET_RECURSIVE).

pvOptionspvOptions

dans Options spécifiques au plug-in de contrôle de code source.[in] Source control plug-in-specific options.

Valeur retournéeReturn value

L’implémentation du plug-in de contrôle de code source de cette fonction est supposée retourner l’une des valeurs suivantes :The source control plug-in implementation of this function is expected to return one of the following values:

ValeurValue DescriptionDescription
SCC_OKSCC_OK Réussite de l’opération d’extraction.Success of get operation.
SCC_E_FILENOTCONTROLLEDSCC_E_FILENOTCONTROLLED Le fichier n'est pas soumis au contrôle de code source.The file is not under source control.
SCC_E_OPNOTSUPPORTEDSCC_E_OPNOTSUPPORTED Le système de contrôle de code source ne prend pas en charge cette opération.The source control system does not support this operation.
SCC_E_FILEISCHECKEDOUTSCC_E_FILEISCHECKEDOUT Impossible d’extraire le fichier que l’utilisateur a actuellement extrait.Cannot get the file that the user currently has checked out.
SCC_E_ACCESSFAILURESCC_E_ACCESSFAILURE Un problème est survenu lors de l’accès au système de contrôle de code source, probablement en raison de problèmes de réseau ou de contention.There was a problem accessing the source control system, probably due to network or contention issues. Une nouvelle tentative est recommandée.A retry is recommended.
SCC_E_NOSPECIFIEDVERSIONSCC_E_NOSPECIFIEDVERSION A spécifié une version ou une date/heure non valide.Specified an invalid version or date/time.
SCC_E_NONSPECIFICERRORSCC_E_NONSPECIFICERROR Échec non spécifique ; le fichier n’a pas été synchronisé.Nonspecific failure; file was not synchronized.
SCC_I_OPERATIONCANCELEDSCC_I_OPERATIONCANCELED Opération annulée avant la fin.Operation cancelled before completion.
SCC_E_NOTAUTHORIZEDSCC_E_NOTAUTHORIZED L'utilisateur n'est pas autorisé à effectuer cette opération.The user is not authorized to perform this operation.

NotesRemarks

Cette fonction est appelée avec un nombre et un tableau de noms des fichiers à récupérer.This function is called with a count and an array of names of the files to be retrieved. Si l’IDE passe l’indicateur SCC_GET_ALL , cela signifie que les éléments de lpFileNames ne sont pas des fichiers mais des répertoires, et que tous les fichiers sous contrôle de code source dans les répertoires spécifiés doivent être récupérés.If the IDE passes the flag SCC_GET_ALL, this means that the items in lpFileNames are not files but directories, and that all files under source control in the given directories are to be retrieved.

L' SCC_GET_ALL indicateur peut être combiné avec l' SCC_GET_RECURSIVE indicateur pour récupérer également tous les fichiers dans les répertoires et les sous-répertoires spécifiés.The SCC_GET_ALL flag can be combined with the SCC_GET_RECURSIVE flag to retrieve all files in the given directories and all subdirectories as well.

Notes

SCC_GET_RECURSIVE ne doit jamais être passé sans SCC_GET_ALL .SCC_GET_RECURSIVE should never be passed without SCC_GET_ALL. Notez également que si les répertoires C:\a et C:\A\B sont tous deux transmis sur une opération d’extraction récursive, C:\A\B et tous ses sous-répertoires seront en fait récupérés deux fois.Also, note that if directories C:\A and C:\A\B are both passed on a recursive get, C:\A\B and all its subdirectories will actually be retrieved twice. C’est la responsabilité de l’IDE, et non le plug-in de contrôle de code source, qui permet de s’assurer que les doublons de ce type sont conservés hors du tableau.It is the IDE's responsibility—and not the source control plug-in's—to make sure that duplicates such as this are kept out of the array.

Enfin, même si un plug-in de contrôle de code source spécifiait l' SCC_CAP_GET_NOUI indicateur lors de l’initialisation, indiquant qu’il n’a pas d’interface utilisateur pour une commande obtenir, cette fonction peut toujours être appelée par l’IDE pour récupérer des fichiers.Finally, even if a source control plug-in specified the SCC_CAP_GET_NOUI flag on initialization, indicating that it does not have a user interface for a Get command, this function may still be called by the IDE to retrieve files. L’indicateur signifie simplement que l’IDE n’affiche pas d’élément de menu obtenir et que le plug-in n’est pas censé fournir d’interface utilisateur.The flag simply means that the IDE does not display a Get menu item and that the plug-in is not expected to provide any UI.

Renommer des fichiers et SccGetRename files and SccGet

Situation : un utilisateur extrait un fichier, par exemple, a.txt, et le modifie.Situation: a user checks out a file, for example, a.txt, and modifies it. Avant de pouvoir archiver a.txt , un deuxième utilisateur renomme a.txt en b.txt dans la base de données de contrôle de code source, extrait b.txt, apporte des modifications au fichier et vérifie le fichier dans.Before a.txt can be checked in, a second user renames a.txt to b.txt in the source control database, checks out b.txt, makes some modifications to the file, and checks the file in. Le premier utilisateur souhaite les modifications apportées par le deuxième utilisateur afin que le premier utilisateur renomme sa version locale de a.txt fichier en b.txt et effectue une récupération sur le fichier.The first user wants the changes made by the second user so the first user renames their local version of a.txt file to b.txt and does a get on the file. Toutefois, le cache local qui effectue le suivi des numéros de version pense toujours que la première version de a.txt est stockée localement et par conséquent, le contrôle de code source ne peut pas résoudre les différences.However, the local cache that keeps track of version numbers still thinks the first version of a.txt is stored locally and so source control cannot resolve the differences.

Il existe deux façons de résoudre cette situation où le cache local des versions du contrôle de code source n’est plus synchronisé avec la base de données de contrôle de code source :There are two ways to resolve this situation where the local cache of source control versions becomes out of sync with the source control database:

  1. N’autorisez pas l’attribution d’un nouveau nom à un fichier dans la base de données de contrôle de code source actuellement extrait.Do not allow renaming a file in the source control database that is currently checked out.

  2. Utilisez l’équivalent de « supprimer l’ancien » suivi de « Ajouter nouveau ».Do the equivalent of "delete old" followed by "add new". L’algorithme suivant est l’un des moyens d’y parvenir.The following algorithm is one way to accomplish this.

    1. Appelez la fonction SccQueryChanges pour en savoir plus sur le changement de nom de a.txt à b.txt dans la base de données de contrôle de code source.Call the SccQueryChanges function to learn about the renaming of a.txt to b.txt in the source control database.

    2. Renommez le a.txt local en b.txt.Rename the local a.txt to b.txt.

    3. Appelez la SccGet fonction pour a.txt et b.txt.Call the SccGet function for both a.txt and b.txt.

    4. Étant donné que a.txt n’existe pas dans la base de données de contrôle de code source, le cache de la version locale est purgé des informations de version de a.txt manquantes.Because a.txt does not exist in the source control database, the local version cache is purged of the missing a.txt version information.

    5. Le fichier b.txt extrait est fusionné avec le contenu du fichier de b.txt local.The b.txt file being checked out is merged with the contents of the local b.txt file.

    6. Le fichier b.txt mis à jour peut désormais être archivé.The updated b.txt file can now be checked in.

Voir aussiSee also