Partager via


SccGet, fonction

Cette fonction récupère une copie d'un ou plusieurs fichiers pour afficher et compiler mais pas pour modifier. Dans la plupart des systèmes, les fichiers sont référencés en lecture seule.

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

Paramètres

  • pvContext
    [in] La structure de contexte du plug-in contrôle de code source.

  • hWnd
    [in] Un handle de la fenêtre IDE que le plug-in contrôle de code source peut utiliser en tant que parent pour toutes les boîtes de dialogue qu'elle fournit.

  • nFiles
    [in] Nombre de fichiers spécifiés dans le tableau d' lpFileNames .

  • lpFileNames
    [in] Tableau des noms qualifiés complets des fichiers à récupérer.

  • fOptions
    [in] Indicateurs de commande (SCC_GET_ALL, SCC_GET_RECURSIVE).

  • pvOptions
    [in] options de prise-dans-détail de contrôle de code source.

Valeur de retour

Il est recommandé que l'implémentation du plug-in du contrôle de code source de cette fonction retourne une des valeurs suivantes :

Valeur

Description

SCC_OK

Réussite d'opération d'extraction.

SCC_E_FILENOTCONTROLLED

Le fichier n'est pas sous contrôle de code source.

SCC_E_OPNOTSUPPORTED

Le système de contrôle de code source ne prend pas en charge cette opération.

SCC_E_FILEISCHECKEDOUT

Ne peut pas obtenir le fichier que l'utilisateur actuellement extrait.

SCC_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 conflit. Une démarrage est recommandée.

SCC_E_NOSPECIFIEDVERSION

A indiqué une version ou un date/heure valide.

SCC_E_NONSPECIFICERROR

échec non spécifique ; le fichier n'a pas été synchronisé.

SCC_I_OPERATIONCANCELED

opération annulée avant l'achèvement.

SCC_E_NOTAUTHORIZED

L'utilisateur n'est pas autorisé à exécuter cette opération.

Notes

Cette fonction est appelée avec un nombre et un tableau de noms des fichiers à récupérer. Si l'IDE passe la balise SCC_GET_ALL, cela signifie que les éléments de lpFileNames ne sont pas des fichiers mais les 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.

La balise d' SCC_GET_ALL peut être combiné avec la balise d' SCC_GET_RECURSIVE pour récupérer tous les fichiers dans les répertoires spécifiés et tous les sous-répertoires également.

Notes

SCC_GET_RECURSIVE ne doit jamais être passé sans SCC_GET_ALL.En outre, remarquez que si des répertoires C : \A and C:\A\B are both passed on a recursive get, C:\A\B et tous ses sous-répertoires réellement sont extraits deux fois.C'est l'IDE responsabilité-et pas le contrôle du code source prise-in's-à vérifiez que les doublons telles que sont conservés hors de le tableau.

Enfin, même si un plug-in contrôle de code source a spécifié la balise d' SCC_CAP_GET_NOUI à l'initialisation, indiquant qu'elle n'a pas d'interface utilisateur pour une commande get, cette fonction peut encore être appelée par l'IDE pour récupérer des fichiers. La balise signifie simplement que l'IDE n'affiche pas un élément de menu get et qu'il n'est pas censé que le plug-in ne fournit aucune interface utilisateur.

renommer et SccGet

situation : les contrôles d'un utilisateur un fichier, par exemple, a.txt, et le modifier. Avant de a.txt puisse être archivé, un second utilisateur renomme a.txt sur b.txt dans la base de données contenant le contrôle de code source, contrôles b.txt, apporte des modifications au fichier, puis signe le fichier. Le premier utilisateur souhaite les modifications apportées par le second utilisateur afin que le premier utilisateur renomme leur version locale du fichier a.txt à b.txt et fait une commande d'extraction sur le fichier. Toutefois, le cache local qui contient les numéros de version pense toujours que la première version de a.txt sont stockées localement et le contrôle de code source ne peut pas résoudre les différences.

Il existe deux manières de résoudre cette situation où le cache local des versions du contrôle de code source devient hors de la synchronisation avec la base de données du contrôle de code source :

  1. N'autorisez pas renommer un fichier dans la base de données contenant le contrôle de code source qui est actuellement vérifié.

  2. Faites l'équivalent de « delete » suivi de « add new ». L'algorithme suivant est un moyen d'accomplir cette tâche.

    1. Appelez la fonction de SccQueryChanges, fonction pour découvrir renommer de a.txt sur b.txt dans la base de données contenant le contrôle de code source.

    2. renommez a.txt local à b.txt.

    3. appelez la fonction d' SccGet pour a.txt et b.txt.

    4. Comme a.txt n'existe pas dans la base de données contenant le contrôle de code source, le cache local de version est vidé des informations de version manquantes de a.txt.

    5. Le fichier b.txt est vérifié est fusionné avec le contenu du fichier local de b.txt.

    6. Le fichier mis à jour à partir de b.txt peut désormais être activé dans.

Voir aussi

Concepts

Fonctions API des plug-ins de contrôle de code source

Bits indicateurs utilisés par des commandes spécifiques