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.