Détails de Configuration de contrôle de code sourceSource Control Configuration Details

Pour implémenter le contrôle de code source, vous devez configurer correctement votre système de projet ou d’un éditeur pour effectuer les opérations suivantes :In order to implement source control, you need to properly configure your project system or editor to do the following:

  • Demander l’autorisation à passer à l’état modifiéRequest permission to transition to changed state

  • Demander l’autorisation d’enregistrer un fichierRequest permission to save a file

  • Demander l’autorisation d’ajouter, supprimer ou renommer des fichiers dans le projetRequest permission to add, remove, or rename files in the project

Demander l’autorisation à passer à l’état modifiéRequest Permission to Transition to Changed State

Un projet ou un éditeur doit demander l’autorisation à passer à l’état (« Dirty ») modifié en appelant IVsQueryEditQuerySave2.A project or editor must request permission to transition to the changed (dirty) state by calling IVsQueryEditQuerySave2. Chaque éditeur qui implémente IsDocDataDirty doit appeler QueryEditFiles et recevoir une approbation pour modifier le document à partir de l’environnement avant de retourner True pour IsDocDataDirty.Each editor that implements IsDocDataDirty must call QueryEditFiles and receive approval to change the document from the environment before returning True for IsDocDataDirty. Un projet est essentiellement un éditeur pour un fichier de projet et par conséquent, a la responsabilité de même pour l’implémentation de suivi de l’état modifié pour le fichier projet comme un éditeur de texte pour ses fichiers.A project is essentially an editor for a project file, and as a result, has the same responsibility for implementing changed-state tracking for the project file as a text editor does for its files. L’environnement gère l’état modifié de la solution, mais vous devez gérer l’état modifié de n’importe quel objet fait référence à la solution, mais ne stocke pas, comme un fichier de projet ou de ses éléments.The environment handles the changed state of the solution, but you must handle the changed state of any object the solution references but does not store, like a project file or its items. En règle générale, si votre projet ou votre éditeur est chargé de gérer la persistance d’un élément, il est chargé d’implémenter le suivi de l’état modifié.In general, if your project or editor is responsible for managing persistence for an item, then it is responsible for implementing changed-state tracking.

En réponse à la IVsQueryEditQuerySave2::QueryEditFiles appeler, l’environnement pouvez procédez comme suit :In response to the IVsQueryEditQuerySave2::QueryEditFiles call, the environment can do the following:

  • Rejeter l’appel à modifier, auquel cas l’éditeur ou du projet doit rester dans l’état inchangé de (nouveau).Reject the call to change, in which case the editor or project must remain in the unchanged (clean) state.

  • Indiquer que les données du document doivent être rechargées.Indicate that the document data should be reloaded. Pour un projet, l’environnement recharge les données pour le projet.For a project, the environment will reload the data for the project. Un éditeur doit recharger les données à partir du disque via son ReloadDocData implémentation.An editor must reload the data from disk through its ReloadDocData implementation. Dans les deux cas, le contexte dans le projet ou l’éditeur peut changer lorsque les données sont rechargées.In either case, the context in the project or editor can change when the data is reloaded.

    Il s’agit d’une tâche complexe et difficile à adapter a posteriori approprié IVsQueryEditQuerySave2::QueryEditFiles appels sur une base de code existante.It is a complex and difficult task to retrofit appropriate IVsQueryEditQuerySave2::QueryEditFiles calls onto an existing code base. Par conséquent, ces appels doivent être intégrées lors de la création du projet ou de l’éditeur.As a result, these calls should be integrated during the creation of the project or editor.

Demander l’autorisation d’enregistrer un fichierRequest Permission to Save a File

Avant qu’un projet ou un éditeur enregistre un fichier, il doit appeler QuerySaveFile ou QuerySaveFiles.Before a project or editor saves a file, it must call QuerySaveFile or QuerySaveFiles. Pour les fichiers de projet, ces appels sont automatiquement effectuées par la solution, qui sait quand enregistrer un fichier de projet.For project files, these calls are automatically completed by the solution, which knows when to save a project file. Éditeurs sont responsables de l’exécution de ces appels, sauf si l’implémentation de l’éditeur de IVsPersistDocData2 utilise la fonction d’assistance SaveDocDataToFile.Editors are responsible for making these calls unless the editor implementation of IVsPersistDocData2 uses the helper function SaveDocDataToFile. Si votre éditeur implémente IVsPersistDocData2 de cette façon, puis l’appel à IVsQueryEditQuerySave2::QuerySaveFile ou IVsQueryEditQuerySave2::QuerySaveFiles est faite pour vous.If your editor implements IVsPersistDocData2 in this way, then the call to IVsQueryEditQuerySave2::QuerySaveFile or IVsQueryEditQuerySave2::QuerySaveFiles is made for you.

Note

Toujours effectuer ces appels de manière préemptive, autrement dit, à un moment où votre éditeur est en mesure de recevoir une annulation.Always make these calls preemptively—that is, at a time when your editor is able to receive a cancel.

Demander l’autorisation d’ajouter, supprimer ou renommer des fichiers dans le projetRequest Permission to Add, Remove, or Rename Files in the Project

Avant d’un projet peut ajouter, renommer ou supprimer un fichier ou répertoire, il doit appeler approprié IVsTrackProjectDocuments2::OnQuery* méthode pour demander l’autorisation de l’environnement.Before a project can add, rename, or remove a file or directory, it must call the appropriate IVsTrackProjectDocuments2::OnQuery* method to request permission from the environment. Si l’autorisation est accordée, le projet doit effectuer l’opération, puis appelez approprié IVsTrackProjectDocuments2::OnAfter* méthode pour notifier l’environnement que l’opération est terminée.If permission is granted, then the project must complete the operation and then call the appropriate IVsTrackProjectDocuments2::OnAfter* method to notify the environment that the operation is complete. Le projet doit appeler les méthodes de la IVsTrackProjectDocuments2 interface pour tous les fichiers (par exemple, des fichiers spéciaux) et pas seulement les fichiers de parent.The project must call the methods of the IVsTrackProjectDocuments2 interface for all files (for example, special files) and not just the parent files. Appels de fichiers sont obligatoires, mais les appels d’annuaire sont facultatifs.File calls are mandatory, but directory calls are optional. Si votre projet comporte des informations d’annuaire, il doit appeler approprié IVsTrackProjectDocuments2 méthodes, toutefois, si elle n’a pas de ces informations, l’environnement de déduire les informations d’annuaire.If your project has directory information, then it should call the appropriate IVsTrackProjectDocuments2 methods, but if it does not have this information, then the environment will infer directory information.

Le projet ne doit pas appeler les méthodes de IVsTrackProjectDocuments2 au projet ouvrir ou fermer.The project should not call the methods of IVsTrackProjectDocuments2 at project open or close. Écouteurs de ces informations au démarrage peuvent attendre le OnAfterOpenSolution événement et une itération au sein de la solution pour trouver les informations dont ils ont besoin.Listeners that want this information at startup can wait for the OnAfterOpenSolution event and iterate through the solution to find the information they need. Lors de l’arrêt, ces informations ne sont pas nécessaires.On shutdown, this information is not needed. IVsTrackProjectDocuments2 est fourni par le SVsTrackProjectDocuments.IVsTrackProjectDocuments2 is provided from the SVsTrackProjectDocuments.

Pour chaque ajout, changement de nom et action de suppression, il existe un OnQuery* (méthode) et un OnAfter* (méthode).For each add, rename, and remove action, there is an OnQuery* method and an OnAfter* method. Appelez le OnQuery* méthode pour demander l’autorisation d’ajouter, renommer ou supprimer le fichier ou répertoire.Call the OnQuery* method to ask permission to add, rename, or remove the file or directory. Appelez le OnAfter* méthode une fois que le fichier ou répertoire a été ajouté, renommé ou supprimé et l’état du projet reflète le nouvel état.Call the OnAfter* method after the file or directory has been added, renamed, or removed and the project state reflects the new state.

Voir aussiSee Also