项目和编辑器的其他源代码管理指南
项目和编辑器应遵循许多准则来支持源代码管理。
准则
项目或编辑器还应执行以下操作来支持源代码管理:
区域 | Project | 编辑器 | 详细信息 |
---|---|---|---|
文件的专用副本 | X | 环境支持文件的私人副本。 也就是说,在项目中登记的每个人都有自己的文件私人副本。 | |
ANSI/Unicode 持久性 | X | X | 如果编写持久性代码,请在 ANSI 窗体中保留文件,因为大多数源代码管理程序当前不支持 Unicode。 |
枚举文件 | X | 项目必须包含其中所有文件的特定列表,并且必须能够使用 IVsSccProject2 或 GetProperty (VSH_PROPID_First_Child/Next_Sibling)枚举文件列表。 项目还应通过其 GetMkDocument 实现公开项名称,并通过其 IsDocumentInProject 实现公开项名称查找(包括特殊文件)。 | |
文本格式 | X | X | 如果可能,文件应采用文本格式来支持不同版本的合并。 以后,不采用文本格式的文件无法与其他版本的文件合并。 首选文本格式为 XML。 |
基于引用 | X | 源代码管理中随时支持基于引用的项目。 但是,只要项目可以按需生成文件列表,也支持基于目录的项目,而不管这些文件是否存在于磁盘上。 从源代码管理打开项目时,项目文件先关闭,然后再将其文件删除。 | |
按可预测顺序保存对象和属性 | X | X | 按可预测顺序(如字母顺序)保存文件,以方便合并。 |
重新加载 | X | X | 当磁盘上的文件发生更改时,编辑器必须能够重新加载它。 参与源代码管理时,环境将通过调用 ReloadDocData 实现来重新加载数据。 最困难的重载情况是在调用 IVsQueryEditQuerySave:和QueryEditFiles正在处理信息时发生检查输出。 但是,重载代码必须能够在这种情况下运行。 环境会自动重新加载项目文件。 但是,如果项目具有嵌套层次结构,则项目必须实现 IVsPersistHierarchyItem2 以支持重新加载嵌套项目文件。 |