第二十九章:集体开发

在组合一组开发者的技能时,可以快速创建出复杂的应用程序。但是,若要保证集体开发工作的顺利进行,还需要一些特殊的协调。策略之一就是使用“源代码管理软件”来管理项目中的文件,例如 Microsoft Visual SourceSafe™。

本章将提供一些策略,根据这些策略您可以成功地进行集体开发。前提是您对于创建一个 Visual FoxPro 应用程序的过程已经非常熟悉,这些内容在本书的前面几章已做了介绍。

本章内容要点:

深入了解集体开发

通过集体开发,可以更快地创建应用程序,并且可以开发更为复杂的应用程序。对于很难或不可能由单个开发者创建的应用程序,集体开发还可以融合不同开发者的不同技能。

但是,在集体开发过程中需要一些特殊的努力。成功的集体开发依赖于以下几点:

例如,您的小组正在开发一个复杂的应用程序。因为应用程序很大,Visual FoxPro 必须保证几个开发者能同时处理应用程序的不同部分。但是还需要保证一次只有一个开发者处理某个单独的组件,例如表单,这样一个开发者就不会覆盖另一个开发者所作的更改。

另外,需要开发者能为一个表单编写代码,并且能测试和调试表单,同时不至于影响其他继续使用该表单以前版本的开发者(和用户)。当第一个开发者完成了新表单时,增强的功能可以集成到应用程序中。

在协调多个开发者时您可以采用本章推荐的方法。例如,本章将介绍在多开发者环境中如何处理项目和类库。有关详细内容,请参阅本章稍后的“集成源代码管理系统和 Visual FoxPro 项目”“集体开发类库”

深入了解源代码管理

Visual FoxPro 提供了很多支持集体开发的功能。集体开发的一个重要的特性是使用“源代码管理系统”来协调那些可以访问和修改项目中文件的开发者。

“源代码管理”是管理多人开发环境的所有工具的统称。大多数源代码管理工具类似于传统的公共库,它维护文件的中心仓库 — 文档、程序或其他任何文件 — 所有开发者都可以访问它。另外,源代码管理工具还具有跟踪开发者对文件所作更改的能力,在必要时还可以将文件恢复到以前的版本。

一般地讲,源代码管理工具具有下面部分或全部特性:

若要使用源代码管理系统,用户必须加入一个源代码管理的项目(有时称作在项目中注册)。当用户已经加入一个项目之后,他们就可以签出和签入属于这个项目的文件。

注释 必须设置源代码管理系统的相应选项,才能使同一文件被多次签出,以便同一项目的多个开发者同步工作。有关的详细内容,请参阅相关的源代码管理系统的文档。

在 Visual FoxPro 中使用源代码管理软件

集体开发的一个关键问题是控制谁可以更改文件。例如,文件不受控制,并且多个开发者同时更改一个程序,则很有可能有些更改会被覆盖或丢弃,这样就浪费了时间和精力。

Visual FoxPro 允许您将源代码管理系统集成到 Visual FoxPro 项目管理器中,帮助开发小组在项目中管理文件。通过这种方式,您可以在集体开发环境中管理项目文件,并且能保证开发工作的顺利进行。

集成源代码管理系统和 Visual FoxPro 项目

Visual FoxPro 支持多种源代码管理工具,允许您将商用的源代码管理软件直接集成到项目中。 Visual FoxPro 支持多种版本的管理系统(请与各软件经销商联系,查看他的软件能否集成到 Microsoft 开发工具中)。如果开发小组已经使用了 Microsoft Visual SourceSafe,您可以使用它作为 Visual FoxPro 中的源代码管理软件。

Visual FoxPro 中所有的源代码管理都通过项目管理器来管理。在 Visual FoxPro 中建立一个项目时,您可以选择创建一个相应的源代码管理项目,也就是指“将该项目置于源代码管理之下”。在将一个项目置于源代码管理下之以后,Visual FoxPro 帮助您管理源代码管理项目中的文件。当您想修改一个文件时,例如编辑一个程序或修改一个表单时,Visual FoxPro 将提醒您签出这个文件。

在 Visual FoxPro 中,源代码管理系统用来管理各种类型的文件,不仅仅是 .prg 文件,也可以是 .scx、.frx、.lbx、.mnx 和 .vcx 文件,以及其他文件。虽然有可能某个文件出现在多个 Visual FoxPro 项目中,但是所有的源代码管理的操作都是在一个特定项目的文件上进行的。

注释 在创建数据表时,例如 .dbf 和 .dbc 文件,Visual FoxPro 并不提醒您将它们放在源代码管理之下,但是您可以人工将它们添加到源代码管理的项目中。

在项目管理器中处理一个源代码管理的项目时,Visual FoxPro 在源代码管理文件的旁边显示图标,以指明文件的状态。

“项目管理器”显示源代码管理图标

下表概述了用于“项目管理器”以指定源代码状态:

图标 含义
该文件已经被您签出了。
该文件已经被您以及另一个或多个开发者签出了。
该文件由另一个开发者签出了。
该文件没有签出,只有在您签出它之后才能更改它。
该文件已经合并了。当检查完更改之后,您就可以将该文件签入。
文件已经合并了,并且存在需要解决的冲突。
Visual FoxPro 不能确定该文件的源代码管理状态。

如果一个文件未处于源代码管理之下,则文件旁就不会出现图标。

注释 有关合并文件和合并冲突的详细内容,请参阅本章稍后的“签入文本文件”

启用源代码管理系统

若要启用源代码管理系统,首先请按照源代码管理软件附带的文档对它进行安装。通常,需要在源代码所在的服务器上安装一个管理器版本,然后在本地机上安装该产品的客户机版本。

注释 项目的所有开发者必须使用相同的源代码管理软件。

在安装了源代码管理软件之后,就可以设置选项,这样 Visual FoxPro 可以识别它,并且为您的项目指定默认值。

若要在 Visual FoxPro 中启用源代码管理系统

  1. 从“工具”菜单中,选择“选项”命令。

  2. “选项”对话框中,选择“项目”选项卡。

  3. 在“源代码管理选项”区,从“激活源代码管理器”列表中选择源代码管理程序的名称。

  4. 若要让 Visual FoxPro 提醒您将新的项目添加到源代码管理系统中,可以选择“自动加入新的项目到源代码管理器”。

每次启动 Visual FoxPro 时,它都会检查是否存在一个源代码管理系统。如果存在,就可以在源代码管理下添加或管理项目。

在源代码管理系统下管理 Visual FoxPro 项目

若要在 Visual FoxPro 中使用源代码管理软件,请将项目置于源代码管理之下,向您的源代码管理项目中添加文件,更新每个项目的项目列表。

处理项目文件和项目列表文件

在 Visual FoxPro 中,项目信息是由一组表和备注文件保存的,它们的扩展名分别是 .pjx 和 .pjt。例如,如果创建了一个名为“MyProj”的项目,它的有关信息,包括文件列表、它们的位置,以及它们是否被编译进应用程序文件(.app 或 .exe 文件),都保存在名为 Myproj.pjx 和 Myproj.pjt 的文件中。

在集体开发环境中工作时,开发者并不共享相同的项目文件(.pjx 和 .pjt 文件),而是在他们自己本地维护各自的 .pjx 和 .pjt 文件副本。

为了协调单个开发者对源代码管理项目所作的更改,Visual FoxPro 保存了一个项目文件列表(或者 .pjm 文件,是“project metafile”的简写)。这个文件是一个文本文件,保存了项目文件的列表。它存贮的信息与 .pjx 和 .pjt 文件相同,例如项目中当前包含了哪些文件。

源代码管理软件保存了一个中心项目文件的列表文件,它与其它文件一起存储在当前的中心仓库中。另外,每个开发者还拥有签出的项目文件列表的本地副本,它反映了该项目的当前版本。

假设您正在处理一个项目,并且正要添加一个新程序(.prg 文件)。在添加新文件时(还要假设您将该文件置于源代码管理之下),Visual FoxPro 就会更新该项目的本地副本,并且当您在您的计算机上使用项目管理器时,显示该文件。其他开发者开始并不知道您所作的更改,并且他们的该项目本地副本并不显示您添加的文件。即使您没有更新项目文件列表,您仍可以为了安全将这个新文件签入,并且在需要的时候再将它签出。

在处理完新文件之后,例如,测试完新程序之后,您可以更新项目文件列表。随后,Visual FoxPro 将本地项目文件列表的信息与中心项目文件列表合并。

反过来,Visual FoxPro 用中心项目文件列表中的更改来更新本地的项目文件列表。如果其他开发者已经向项目中添加了文件,本地的项目文件列表就会更新,新文件的本地副本就会显示在您的计算机上,Visual FoxPro 重新构建项目(.pjx 和 .pjt 文件),并且项目管理器会显示已经添加了的文件,您就可以对它们进行处理了。

使用项目列表管理项目文件

注释 项目文件列表只跟踪明确置于源代码管理之下的项目文件。如果项目中包含了不在源代码管理下的文件,它们就不会显示在项目文件列表中,并且当其他开发者更新自己的项目列表时,Visual FoxPro 不将这些文件添加到他们的项目中。

将项目置于源代码管理之下

在使用源代码管理软件之前,必须指定源代码管理将管理此 Visual FoxPro 项目。这需要将项目添加到源代码管理系统中。

如果已经启用了源代码管理软件,可以指定您创建的任何新项目自动置于源代码管理之下。

若要创建一个新的源代码管理项目

  1. “选项”对话框中,选择“项目”选项卡,如果还没有选定源代码管理系统,这时需要选择一个。

  2. 确认已经选择了“自动加入新的项目到源代码管理器”,然后选择“确定”。若想令这个设置成为默认设置,请选择“设置为默认值”,然后选择“确定”。

  3. 从“文件”菜单中选择“新建”命令,然后开始设计一个新的 Visual FoxPro 项目。

    为新项目命名之后,Visual FoxPro 就会提醒您创建一个相应的新的源代码管理的项目。新项目的默认名称将与 Visual FoxPro 项目的名称相同。

创建了新的源代码管理项目之后,Visual FoxPro 也就完成了这个 Visual FoxPro 项目的创建工作。其他开发者必须先注册才能使用该项目。有关详细内容,请参阅本章稍后的“加入一个现有的源代码管理项目”

如果有一个现有的项目,但它还没有置于源代码管理之下,您可以为它创建一个新的源代码管理项目,然后将它的文件置于源代码管理之下。

若要将一个现有的项目置于源代码管理之下

  1. “项目管理器”中打开您的 Visual FoxPro 项目。

  2. 从“项目”菜单中,选择“将项目加到源代码管理器中”命令。

    Visual FoxPro 为源代码管理系统显示对话框,这样您可以创建一个新项目。默认情况下,源代码管理项目的名称与 Visual FoxPro 项目的名称相同。

  3. 在您的源代码管理软件中,象平常一样创建一个源代码管理的项目。

向源代码管理系统中添加一个现有的项目之后,Visual FoxPro 会提醒您将项目文件添加到源代码管理的项目中。有关详细内容,请参阅本章稍后的“向源代码管理项目添加文件”

向源代码管理项目添加文件

将 Visual FoxPro 项目置于源代码管理下之后,可以将单独的文件添加到源代码管理的项目中。如果将 Visual FoxPro 项目置于源代码管理之下时,已经包含了文件,您也可以将它们添加到源代码管理的项目中。

注释 有的源代码管理软件允许在文件加到源代码管理项目中时,仍使这些文件处于签出的状态。对于另外一些源代码管理软件,必须在把文件加入到源代码管理项目后,再人工签出它们,才能对其进行处理。有关处理将文件添加到项目中之后签出和签入文件的详细内容,请参阅本章稍后的“在源代码管理项目中管理文件”

若要向源代码管理项目中添加现有的文件

  1. 从“项目”菜单中,选择“源代码管理”命令,然后选择“往源代码管理中加入文件”命令。

  2. “往源代码管理中加入文件”对话框中选择您想添加的文件。

    注释 只有源代码管理软件支持这些选项时,“保留签出”和“注释”才会出现。

  3. 选择“确定”。

    Visual FoxPro 为源代码管理软件生成了必要的控制文件,然后将这些文件添加到项目中。如果选择了很多文件,这个过程会需要一段时间。

可以设置在向一个项目添加文件时,由 Visual FoxPro 提醒您将这个文件置于源代码管理之下。

若要 Visual FoxPro 提醒您将文件置于源代码管理之下

在将文件添加到项目中之后,必须更新项目列表,这样其他开发者才能处理这些新文件。有关详细内容,请参阅本章稍后的“更新项目列表”

加入一个现有的源代码管理项目

如果刚刚加入一个已经由源代码管理的项目,在签出和签入文件之前必须先加入这个项目。在加入一个项目时,Visual FoxPro 为您创建一个本地项目列表,并且生成一个当前项目文件(.pjx 文件)。

若要加入一个现有的项目

  1. 从“文件”菜单中选择“联接源代码管理项目”命令。

  2. 从“打开项目”对话框中,选择包含了希望加入的 Visual FoxPro 项目文件的服务器和目录。

  3. 在本地机上设置工作目录,这样就指定了在签出文件时源代码管理系统在哪里放置这些文件;并且指定了当您签入文件时,源代码管理系统到哪里去找这些文件。例如,如果使用 Visual SourceSafe 作为源代码管理软件,可以从“目录”区选择“浏览”,然后选择一个已有目录,或者键入新目录的名称。

    提示 对于项目中的文件,虽然单个子目录的名称可以不同,但是一个项目中的所有开发者必须使用相同的目录结构。

更新项目列表

将文件添加到源代码管理项目中之后,在其他开发者的项目管理器上仍不能看见这些文件。其他开发者只能以人工方式签出这些文件,处理完以后再签入。但如果更新了项目列表,新增的文件就可以出现在其他开发者的项目管理器中,供他们使用。

在更新项目列表时,Visual FoxPro 会进行下列处理:

若要更新项目列表

在更新过程中,Visual FoxPro 提醒您得到文件的最新版本。如果已经签出了一个文件,那么这个文件的版本可以肯定比网络上的要新,所以不用更新它。

如果得到的是文本文件的最新版本(例如一个程序),源代码管理软件会尝试合并最新版本和您的版本。有关合并文本文件的详细内容,请参阅本章稍后的“签入文件”

在更新完项目列表之后,为了能处理添加的文件,其他开发者也应该更新他们的项目列表(使用相同的过程)。

解除一个项目的源代码管理

如果不再想控制项目中的文件,可以从源代码管理中解除项目。这样操作之后,文件仍然保留在源代码管理项目中,这样其他开发者就可以继续使用它们,并且您也可以检查文件的历史记录,或者在其他项目中使用它们。

如果在您的计算机上有标识为只读的项目文件。也就是说,有这些文件的副本,但是没有签出它们,从源代码管理中解除项目后,可以去掉它们的只读特性。

注释 将一个项目从源代码管理中解除后,就将本地项目文件和源代码管理项目之间的联系断开了,并且本地文件变为可读写的。在解除项目的源代码管理之后,要确保建立人工的版本控制过程,否则可能含有不在源代码管理之下进行处理的文件。

若要从源代码管理中解除一个项目

  1. 签入所有源代码管理的文件。

  2. 从“项目”菜单中选择“源代码管理”,然后选择“从源代码管理中分离项目”命令。

从源代码管理项目中移去文件

如果在源代码管理项目中不再想包含某些文件,可以从源代码管理下移去它们。例如,当您的项目不再使用已过时的一个程序或表单时,可能需要这样做。

若要从源代码管理中移去一个文件

  1. “项目管理器”中,选择要移去的文件。

  2. 从“项目”菜单中选择“源代码管理”,然后选择“从源代码管理中删除文件”命令。

  3. “从源代码管理中删除文件”对话框中,选择要移去的文件,然后单击“确定”按钮。

如果从源代码管理下的 Visual FoxPro 项目中移去了一个文件,Visual FoxPro 就会象往常一样提醒您是否只从项目中移去文件还是从磁盘上删除文件。选项对话框中的一个设置决定了此提醒信息。

在文件从源代码管理之下移去后,在其他开发者的计算机上可能还存在它的副本。如果是这样,该文件只是被当成那些开发者的本地文件。

在多个源代码管理项目之间共享文件

可以建立一个文件,它同时是两个或多个源代码管理项目的成员。共享文件一般为公共文件,例如多个项目中的标准程序、库、或对话框。在项目之间共享文件时,签入的更改会在所有共享该文件的项目中体现出来。

在源代码管理项目之间共享文件的方法取决于您的源代码管理软件。如果源代码管理系统不支持共享选项,则在菜单上不会有文件共享命令。

下面过程的第一步适用于所有支持文件共享的源代码管理系统。接下来的步骤可能会不同,这取决于源代码管理软件。

若要在源代码管理项目之间共享文件

  1. 从“项目”菜单中选择“源代码管理”,然后选择“共享文件”命令。

  2. 在显示的对话框中,指明想共享的文件,并且它们目前所属的项目。

    菜单上出现的特定选项取决于您的源代码管理系统。有关详细内容,请在“共享”对话框中选择“帮助”,或者参考您的源代码管理系统的文档。

    提示 在 Microsoft Visual SourceSafe 中,使用“项目属性”命令并且选择“连接”选项卡,可以查阅一个文件所属的项目。

在源代码管理项目中管理文件

将一个 Visual FoxPro 项目置于源代码管理之下以后,既可以处理单个的文件,也可以处理整个项目。

处理多文件组件

Visual FoxPro 中的部分项目组件实际上是由多个文件组成的:一个主文件和一个或多个隐含文件。例如,在创建一个表单时,Visual FoxPro 创建一个 .scx 文件(主文件)以及 .sct 文件(隐含文件)。下面的组件具有多个文件:

组件 主文件类型 隐含文件类型
表单 .scx .sct
报表 .frx .frt
标签 .lbx .lbt
类库 .vcx .vct
菜单 .mnx .mnt
.dbf .fpt, .cdx, .idx
数据库 .dbc .dct, .dcx

当开发者签出一个组件文件时,(例如一个表单),Visual FoxPro 也管理相应的隐含文件。类似地,签入一个文件时,或者新增一个文件时,Visual FoxPro 自动管理隐含文件。

注释 如果生成或编译了一个菜单,您就创建了本地的 .mpr 文件以及 .mpx 文件。它们并不自动处于源代码管理下,但是您可以将它们作为文件添加到项目中,并且象其他文件一样将它们置于源代码管理之下。

签出文件

在处理一个源代码管理的项目时,如果你打开相应的编辑器来修改它们,Visual FoxPro 会提醒您签出文件。例如,如果选择一个表单,并且选择“修改”按钮来打开“表单设计器”,Visual FoxPro 会首先提醒您签出表单的文件(如果不签出文件,表单也会在“表单设计器”中显示,但它是只读的)。

但是,您也可以手工签出文件,如果想独占地访问文件,但是不想这时打开编辑器,例如,想脱机处理一个文件时,这就是很有用的。

若要 Visual FoxPro 提醒您在修改时签出文件

若要人工签出文件

  1. 在“项目管理器”中,选择要处理的文件。

  2. 从“项目”菜单中选择“源代码管理”,然后选择“签出”命令。

  3. “签出文件”对话框中,选择您想处理的文件,然后单击“确定”按钮。

签入文件

只能手工签入文件。Visual FoxPro 不能自动签入文件,例如,关闭“表单设计器”时,Visual FoxPro 并不签入表单。并且与此相反,该文件仍是签出的,这样就可以继续编辑它,改变文件的位置,或者用其他方式处理它。

签入过程的真实结果取决于要签入的文件和源代码管理软件。对于表单、菜单、标签、类库和其他类型的文件,都当做二进制文件来处理,并且源代码管理软件将加入文件的新版本,以便其他开发者可以签出。

提示 编辑完文件之后一定要记住签入它们。如果长时间签出它们,可能会妨碍其他开发者对它们的处理,并且在网络备份过程中,会妨碍对最新版本文件的备份。

若要签入文件

  1. “项目管理器”中,选择要处理的文件。

  2. 从“项目”菜单中选择“源代码管理”,然后选择“签入”命令。

  3. 输入一个注释,以表明所作的更改。

  4. “签入文件”对话框中,选择要处理的文件,然后单击“确定”按钮。

签入文本文件

签入一个文本文件时,例如 .prg 文件,并且如果签出了该文件的多个版本,源代码管理软件并不简单地覆盖中心版本的文件。相反,它检查在您最后签出该文件之后是否有人对该文件作了更改。如果作了更改,它会试图将这些更改与您的文件合并。也就是说,它在文件副本中添加、删除和更改一些行。

完成合并之后,源代码管理软件还会给您机会将文件签入。不要立即签入文件,请先用集成了您和其他开发者的新版文件来测试应用程序。对应用程序的运行情况感到满意时,再签入文件。如果其他开发进一步更改了相同的文件,还得再次合并、测试和签入。

在某些情况下,源代码管理软件可能会报告一个合并冲突,这表明它不能解决您与其他开发者各自所作的更改之间的矛盾。例如,您和另一个开发者更新了同一个程序的同一行。如果源代码管理软件不能成功地合并,它会创建一个新版本的文件,这个文件包括原来的文本加上您作的更改,然后为冲突作标识,并将该文件写到您的计算机上(如何标识冲突取决于您使用的源代码管理软件),然后这个文件将出现在项目管理器中,并且带有一个合并冲突图标:

为了解决合并冲突,必须重新编辑、修改这个文件,删除合并冲突标识符。完成编辑时,Visual FoxPro 会提醒您确认已经解决了所有冲突。然后在项目管理器中该文件就会用合并图标标识出来:

测试应用程序,确保更改能正常工作。然后可以试着重新签入文件。如果没有发生合并冲突,您的文件就成为该文件的当前版本。

放弃更改

如果已经签出了一个文件,但是又决定放弃所作的所有更改,您可以撤消签出。此操作具有重新签入文件的效果(也就是说,其他用户可以签出文件),但不会进行更新。例如,本来您想获得文件的最新版本,但是错误地签出了一个文件,这时需要撤消签出,而不是重新签入文件。这样可以防止源代码管理系统为文件创建另一个版本,而且还节省了时间和空间。

提示 如果想查看一个文件,但又不想签出它,可以通过获得该文件的最新版本来达到此目的。有关详细内容,请参阅下一节“得到文件的最新版本”

若要撤消签出

  1. “项目管理器”中,选择要处理的文件。

  2. 从“项目”菜单中,选择“源代码管理”,然后选择“撤消签出”命令。

  3. “撤消签出文件”对话框中,确保选择了需要的文件,然后单击“确定”命令。

得到文件的最新版本

如果想查看一个文件的最新版本,可以签出它。但是,如果文件已经签出了,或者只想查看文件而不修改它,您可以仅要求文件的最新版本。这样做时,Visual FoxPro 将文件最近签入的版本复制到您的计算机上,但它是只读的。即使一个文件目前已签出,您仍可以得到它的最新版本。

如果要得到某文本文件的最新版本,源代码管理软件将网络上的最新版本与您的版本合并,而不是简单地覆盖它。

注释 为了在得到最新版本时合并文件,也许需要在源代码管理软件中设置相应的选项。有关详细内容,请参阅相关的源代码管理软件的文档。

若要得到文件的最新版本

  1. “项目管理器”中,选择想要获得其最新版本的文件。

  2. 从“项目”菜单中,选择“源代码管理”,然后选择“选取最近的版本”命令。如果文件目前已签出,就会提醒您用源代码管理项目中的当前版本替换或合并您签出的版本。

    重要内容 如果已经签出了文件,Visual FoxPro 会提醒您覆盖它。如果您在上次签出文件之后已经对它作了更改,在提醒您替换该文件时必须选择“否”。

比较文件或项目

处理文件和项目时,可能想将工作目录中的当前本地副本与源代码管理项目中的当前主文件进行比较。这可以帮助您确定是否另一个用户更改了此文件,还可以帮助您找到签出文件之后对该文件所作的更改。

大多数源代码管理系统只能比较和显示文本格式文件之间的不同。当 Visual FoxPro 比较表单、报表、菜单、标签和类库时,它使用这些文件的文本代表。有关详细内容,请参阅下一节“检查表单、报表和其他表文件的区别”

注释 如果源代码管理系统不支持文件比较选项,则在菜单上没有相应的命令可用。

若要比较项目之间的区别

若要显示文件或项目列表之间的区别

  1. 如果将要查看单个文件的区别,在“项目管理器”中,选择想要查看其区别的文件。

  2. 对于单个文件,从“项目”菜单中,选择“源代码管理”,然后选择“显示差别”命令。对于项目列表,从“项目”菜单中,选择“源代码管理”,然后选择“显示项目列表的差别”命令。

    因为结果报告是由源代码管理软件生成的,所以会有不同的内容。但是,通常源代码管理系统会并排显示两个版本,并且会突出显示或标识出新的、删除的和更改的行。

检查表单、报表和其他表文件的区别

在 Visual FoxPro 中,源代码管理软件只将几种类型的文件当作文本文件。其中包括程序源代码(.prg)文件和项目文件列表(.pjm 文件)。表单、报表和其他类型的文件将它们的组件信息用表的形式存贮。例如,表单的 .scx 文件是用来保存表单中控件的表,再加上表单本身的信息。用表保存信息的文件有:表单(.scx 文件)、报表(.frx 文件)、菜单(.mnx 文件)、标签(.lbx 文件)和类库(.vcx 文件)。

因为这些文件保存为 Visual FoxPro 的表,源代码管理系统不能将它们看作文本文件(源代码管理系统将它们看作“二进制”文件)。结果,查看这些文件版本之间区别的工具就不能明确指出它们之间的区别,所以您也不能看到有关更改的历史记录。

为了允许您使用源代码管理查看表单、报表和类似文件之间的区别,Visual FoxPro 创建了它们的文本说明。将文件置于源代码管理之下时,Visual FoxPro 就会自动创建该文件的文本版本,当您更改时,文本自动对其进行维护。

Visual FoxPro文件的文本说明

Visual FoxPro 包含了一个工具程序 Scctex.prg,它可以把表类型的文件转换为它们相应的文本说明,别的厂家也提供类似工具,您甚至还可以自己开发一个。

若要指定一个文本转换工具

  1. “选项”对话框中选择“项目”文件。

  2. 在“文本生成”框中,键入转换程序的名称。

  3. 选择“设置为默认值”,然后选择“确定”。

无论何时向源代码管理项目中添加表单、报表、菜单、标签或其他可视类文件时,Visual FoxPro 都自动调用文本转换程序。这个工具生成一个文本文件,文件名与主文件相同,但是用“A”作为扩展名的最后一个字母。例如,对于一个名为 Myform.scx 的表单,该工具生成一个名为 Myform.sca 的文本文件。当更改完表单并签入它时,源代码管理软件自动创建并签入文本文件。

当源代码管理项目中已经包含了表单、报表和类似文件时,如果要指定文本转换工具,必须暂时将它们从项目中移去,当启用了文本生成选项之后再将它们添加进来。

若要为项目中现有的文件生成文本代表

  1. 备份所有会影响到的文件:表单、报表、菜单、标签和类库。

  2. 确认文件没有被签出。

  3. 从“项目”菜单中,选择“源代码管理”,然后选择“从源代码管理中删除文件”命令。

  4. 选择要从项目中移去的文件,然后选择“确定”。

  5. 按照前面讲述的步骤启用文本生成。

  6. 从“项目”菜单中,选择“源代码管理”,然后选择“往源代码管理中加入文件”命令。

  7. 选择要添加的文件,然后选择“确定”。

把每个文件置于源代码管理之下时,Visual FoxPro 同样会创建每个文件的对应的文本代表。

显示文件和项目信息

可以显示单个文件或项目整体的信息。例如,可以显示单个文件或项目列表文件的签出历史记录。通常,可用信息包括以下内容:

若要查看文件或项目列表的签出历史记录

  1. 如果需要查看单个文件的历史记录,在“项目管理器”中,选择想要查看历史记录的文件。

  2. 对于单个文件,从“项目”菜单中,选择“源代码管理”,然后选择“显示历史记录”命令。对于项目列表,从“项目”菜单中,选择“源代码管理”,然后选择“显示项目列表历史记录”命令。

    菜单上的特定选项是否可用取决于您的源代码管理系统。有关详细内容,请在所显示的对话框中选择“帮助”,或者参考有关源代码管理系统的文档。

也可以查看由源代码管理系统维护的单个文件或项目的信息。这通常包括文件或项目列表的签出状态信息,文件是否是文本或二进制文件(这决定了您能否将更改同主文件合并)等等。

若要查看文件或项目列表的源代码管理信息

  1. 如果需要查看单个文件的历史记录,在“项目管理器”中,选择想要查看历史记录的文件。

  2. 对于单个文件,从“项目”菜单中,选择“源代码管理”,然后选择“源代码管理属性”命令。对于项目列表,从“项目”菜单中,选择“源代码管理”,然后选择“项目属性”命令。

    菜单上的特定选项是否可用取决于您的源代码管理系统。有关详细内容,请在所显示的对话框中选择“帮助”,或者参考有关源代码管理系统的文档。

集体开发和修改数据库

除了集体处理项目和项目文件,小组必须还能共享数据库中的信息。集体处理数据库不仅涉及到有关同时控制表中数据的问题,还涉及到能否很好地共享数据库的控制信息。

对于多个开发者同时处理一个数据库,他们必须能够共享数据库(.dbc)文件。在 Visual FoxPro 中,.dbc 文件可以作为一个普通数据表由开发者来共享。这样,.dbc 文件必须与组成数据库的表一起集中保存。开发者不能拥有 .dbc 文件的本地副本,因为他们对数据库所作的更改不能反映到其他开发者的相同文件的版本中。

如果确实需要更改 .dbc 文件,请注意以下限制:

处理视图和连接

视图和连接与表多少有些区别。初次定义视图时,Visual FoxPro 就会打开数据库中的表,但不锁定它们。但是,因为正在使用表,其他开发者就不能修改它们的结构。

第一次保存一个新的视图或连接的定义之后,Visual FoxPro 就独占地锁定它,直到您关闭视图或“连接设计器”。换句话说,只要在设计器中打开视图或连接,它就被独占锁定。视图被锁定时,其他任何人都不能修改它。

使用一个视图时,它的结构被暂存在本地。这保证了当您在使用时如果对视图进行了修改,例如,调用 REFRESH( ) 或 REQUERY( ),您的表单或报表仍能正常运行。

集体开发类库

因为类库(.vcx 文件)是 Visual FoxPro 应用程序的关键部分,创建它们时,小组必须能协调开发。集体处理类库涉及到很多与其他应用程序组件相同的协调问题,同时还有一些只与类相关的问题:

正如复杂的表单和程序,最好能隔离开发类库。这样一个开发者可以更改这个库,而不至于影响其他开发者的工作。理想情况是,当某一个开发者更改一个类库时,组中的其他开发者也能处理它,而不用担心对库所作的更改是否会在应用程序中导致出错。

当一个类正被使用时,Visual FoxPro 把它暂存在本地机器中(即使使用该类的表单已被释放,类也不会被释放)。只有明确地释放它,系统才会把它清出内存。如果在当前工作期中使用了一个类,那么当您想要加载该类的新版本时,必须释放旧版本,否则 Visual FoxPro 不能把已更改的版本调入内存。

将类库置于源代码管理之下

将一个类库置于源代码管理之下时,一次只能有一个开发者签出该类库。对于其他开发者来说,该类库是只读的。通常,这并不影响应用程序的开发,因为即使一个类库是只读的,开发者仍然能使用它或者创建子类。当应用程序开发者处理类库的只读版本时,类库的开发者可以修改库中的所有类。

如果使用这种方法,更新类库的开发者只有在完成并测试了类库之后才能签入文件。否则,当其他开发者更新他们的项目文件列表或打算获取文件的最新版本时,将会得到文件未完成的版本。

如果您的类库很复杂,开发时也可以将它分解为多个小型类库。这种方法的另一个优点是,小类库加载速度更快。但是,这意味着类的完成和可用时间将不统一。

因为每种方法都有优点,所以应该根据开发小组的需要,选择适合自己的最佳策略。