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 :
N'autorisez pas renommer un fichier dans la base de données contenant le contrôle de code source qui est actuellement vérifié.
Faites l'équivalent de « delete » suivi de « add new ». L'algorithme suivant est un moyen d'accomplir cette tâche.
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.
renommez a.txt local à b.txt.
appelez la fonction d' SccGet pour a.txt et b.txt.
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.
Le fichier b.txt est vérifié est fusionné avec le contenu du fichier local de b.txt.
Le fichier mis à jour à partir de b.txt peut désormais être activé dans.