Fonction SccGetSccGet function

Cette fonction récupère une copie d’un ou plusieurs fichiers pour l’affichage et la compilation, mais ne 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 comme étant 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
[in] La structure de contexte du plug-in de contrôle de code source.[in] The context structure of the source control plug-in.

hWndhWnd
[in] Handle vers la fenêtre de l’IDE que le plug-in de contrôle de code source peut utiliser en tant que parent pour 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.

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

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

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

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

Valeur de retourReturn value

L’implémentation de plug-in de contrôle de source de cette fonction est censé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:

ValueValue DescriptionDescription
SCC_OKSCC_OK Succès de l’opération get.Success of get operation.
SCC_E_FILENOTCONTROLLEDSCC_E_FILENOTCONTROLLED Le fichier n’est pas sous 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’obtenir le fichier que l’utilisateur a extrait.Cannot get the file that the user currently has checked out.
SCC_E_ACCESSFAILURESCC_E_ACCESSFAILURE Impossible d’accéder au système de contrôle source, probablement en raison de problèmes 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 Version non valide ou date/heure spécifié.Specified an invalid version or date/time.
SCC_E_NONSPECIFICERRORSCC_E_NONSPECIFICERROR Échec non spécifique ; 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 dans lpFileNames ne sont pas des fichiers, mais les répertoires et tous les fichiers sous contrôle de code source dans les répertoires donné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.

Le SCC_GET_ALL indicateur peut être combiné avec le SCC_GET_RECURSIVE indicateur pour récupérer tous les fichiers dans les répertoires donnés et tous les sous-répertoires.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.

Note

SCC_GET_RECURSIVE ne doit jamais être passé sans SCC_GET_ALL.SCC_GET_RECURSIVE should never be passed without SCC_GET_ALL. En outre, notez que si répertoires C:\A et C:\A\B sont passés sur une opération get récursive, C:\A\B et tous ses sous-répertoires sont récupérées en fait 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. Il incombe de l’IDE, et pas la source de contrôle du plug-in, pour vous assurer que les doublons telle que celle-ci sont conservées 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 contrôle de source plug-in spécifié le SCC_CAP_GET_NOUI indicateur lors de l’initialisation, indiquant alors qu’il n’a pas une interface utilisateur pour une commande Get, 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’un élément de menu Get et que le plug-in n’est pas supposé fournir toute 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.txtet le modifie.Situation: a user checks out a file, for example, a.txt, and modifies it. Avant de a.txt peut être archivé, un second utilisateur renomme a.txt à b.txt dans la base de données de contrôle de source extrait b.txt, rend certaines modifications au fichier et vérifie le fichier.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 veut les modifications apportées par le second utilisateur pour le premier utilisateur renomme leur version locale de a.txt fichier b.txt et effectue une opération get 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 croit toujours la première version de a.txt sont stockées 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 manières de résoudre cette situation où le cache local des versions de contrôle de code source est dé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 la modification du nom d’un fichier dans la base de données de contrôle de code source qui est actuellement extrait.Do not allow renaming a file in the source control database that is currently checked out.

  2. Effectuer l’équivalent de « suppression ancien » suivie de « Ajouter ».Do the equivalent of "delete old" followed by "add new". L’algorithme suivant est une façon d’y parvenir.The following algorithm is one way to accomplish this.

    1. Appelez le SccQueryChanges (fonction) 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. Renommer l’ordinateur local a.txt à b.txt.Rename the local a.txt to b.txt.

    3. Appelez le SccGet (fonction) pour les deux 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 du contrôle de code source, le cache de la version locale est purgé de champ manquant a.txt informations de version.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 b.txt fichier extrait est fusionné avec le contenu de la variable locale b.txt fichier.The b.txt file being checked out is merged with the contents of the local b.txt file.

    6. La mise à jour b.txt fichier peut maintenant être archivé.The updated b.txt file can now be checked in.

Voir aussiSee also

Fonctions d’API source contrôle plug-in Source control plug-in API functions
Indicateurs de bits utilisés par des commandes spécifiquesBitflags used by specific commands