Détails de configuration du contrôle de code source

Pour implémenter le contrôle de code source, vous devez configurer correctement votre système de projet ou votre éditeur pour effectuer les opérations suivantes :

  • Demander l’autorisation de passer à l’état modifié

  • Demander l’autorisation d’enregistrer un fichier

  • Demander l’autorisation d’ajouter, de supprimer ou de renommer des fichiers dans le projet

Demander l’autorisation de passer à l’état modifié

Un projet ou un éditeur doit demander l’autorisation de passer à l’état modifié (sale) en appelant IVsQueryEditQuerySave2. Chaque éditeur qui implémente IsDocDataDirty doit appeler QueryEditFiles et recevoir l’approbation pour modifier le document de l’environnement avant de retourner True pour IsDocDataDirty. Un projet est essentiellement un éditeur pour un fichier projet et, par conséquent, a la même responsabilité d’implémenter le suivi de l’état modifié pour le fichier projet que fait un éditeur de texte pour ses fichiers. L’environnement gère l’état modifié de la solution, mais vous devez gérer l’état modifié d’un objet auquel la solution fait référence, mais ne stocke pas, comme un fichier projet ou ses éléments. En général, si votre projet ou éditeur est responsable de la gestion de la persistance d’un élément, il est responsable de l’implémentation du suivi de l’état modifié.

En réponse à l’appel, l’environnement IVsQueryEditQuerySave2::QueryEditFiles peut effectuer les opérations suivantes :

  • Rejeter l’appel à la modification, auquel cas l’éditeur ou le projet doit rester dans l’état inchangé (propre).

  • Indiquez que les données de document doivent être rechargées. Pour un projet, l’environnement recharge les données du projet. Un éditeur doit recharger les données à partir du disque via son ReloadDocData implémentation. Dans les deux cas, le contexte du projet ou de l’éditeur peut changer lorsque les données sont rechargées.

    Il s’agit d’une tâche complexe et difficile de moderniser les appels appropriés IVsQueryEditQuerySave2::QueryEditFiles sur une base de code existante. Par conséquent, ces appels doivent être intégrés lors de la création du projet ou de l’éditeur.

Demander l’autorisation d’enregistrer un fichier

Avant qu’un projet ou un éditeur enregistre un fichier, il doit appeler QuerySaveFile ou QuerySaveFiles. Pour les fichiers projet, ces appels sont automatiquement effectués par la solution, qui sait quand enregistrer un fichier projet. Les éditeurs sont responsables de l’exécution de ces appels, sauf si l’implémentation de l’éditeur utilise IVsPersistDocData2 la fonction SaveDocDataToFiled’assistance. Si votre éditeur implémente IVsPersistDocData2 de cette façon, l’appel vers IVsQueryEditQuerySave2::QuerySaveFile ou IVsQueryEditQuerySave2::QuerySaveFiles est effectué pour vous.

Remarque

Effectuez toujours ces appels de manière préemptive, c’est-à-dire à la fois lorsque votre éditeur est en mesure de recevoir une annulation.

Demander l’autorisation d’ajouter, de supprimer ou de renommer des fichiers dans le projet

Avant qu’un projet puisse ajouter, renommer ou supprimer un fichier ou un répertoire, il doit appeler la méthode appropriée IVsTrackProjectDocuments2::OnQuery* pour demander l’autorisation de l’environnement. Si l’autorisation est accordée, le projet doit terminer l’opération, puis appeler la méthode appropriée IVsTrackProjectDocuments2::OnAfter* pour informer l’environnement que l’opération est terminée. Le projet doit appeler les méthodes de l’interface IVsTrackProjectDocuments2 pour tous les fichiers (par exemple, les fichiers spéciaux) et pas seulement les fichiers parents. Les appels de fichiers sont obligatoires, mais les appels d’annuaire sont facultatifs. Si votre projet possède des informations d’annuaire, il doit appeler les méthodes appropriées IVsTrackProjectDocuments2 , mais s’il n’a pas ces informations, l’environnement déduit les informations d’annuaire.

Le projet ne doit pas appeler les méthodes d’ouverture ou de fermeture du IVsTrackProjectDocuments2 projet. Les écouteurs qui souhaitent que ces informations au démarrage puissent attendre l’événement OnAfterOpenSolution et effectuer une itération dans la solution pour trouver les informations dont ils ont besoin. Lors de l’arrêt, ces informations ne sont pas nécessaires. IVsTrackProjectDocuments2 est fourni à partir du SVsTrackProjectDocuments.

Pour chaque action d’ajout, de renommage et de suppression, il existe une OnQuery* méthode et une OnAfter* méthode. Appelez la OnQuery* méthode pour demander l’autorisation d’ajouter, renommer ou supprimer le fichier ou le répertoire. Appelez la OnAfter* méthode une fois que le fichier ou le répertoire a été ajouté, renommé ou supprimé et que l’état du projet reflète le nouvel état.