有没有一种简单的自动方式来查找与Delphi项目相关联的所有源文件?

有没有一种简单的自动方式来查找与Delphi项目相关联的所有源文件?,delphi,backup,delphi-2006,gexperts,Delphi,Backup,Delphi 2006,Gexperts,我喜欢在发布版本时备份项目的源代码集。我使用GExperts项目备份,它似乎将项目管理器中的所有文件收集到ZIP文件中。您也可以将任意文件添加到此文件集中,但我始终意识到,我不一定拥有所有文件。除非我专门阅读uses子句,并将我拥有的所有源代码单元添加到项目中,否则我永远无法确定是否存储了重新创建可安装/可执行文件所需的所有文件 我曾经考虑过滚动一个应用程序来遍历一个项目,跟踪所有使用的单元并查看所有搜索路径,看看是否有该单元可用的源文件,并建立一个文件列表以进行备份,但是,嘿,也许有人已经完成

我喜欢在发布版本时备份项目的源代码集。我使用GExperts项目备份,它似乎将项目管理器中的所有文件收集到ZIP文件中。您也可以将任意文件添加到此文件集中,但我始终意识到,我不一定拥有所有文件。除非我专门阅读uses子句,并将我拥有的所有源代码单元添加到项目中,否则我永远无法确定是否存储了重新创建可安装/可执行文件所需的所有文件

我曾经考虑过滚动一个应用程序来遍历一个项目,跟踪所有使用的单元并查看所有搜索路径,看看是否有该单元可用的源文件,并建立一个文件列表以进行备份,但是,嘿,也许有人已经完成了这项工作?

你应该(强烈建议)查看版本控制

e、 g.
SVN
(subversion),
CVS

这将允许您控制所有源代码的修订。它将允许您添加或删除源文件、回滚合并以及所有其他与管理项目源相关的好事情


这将为您节省一天的a$%#。

您可以用两种方式解释您的问题:

  • 如何确保我至少备份了足够的文件,以便构建项目
  • 如何确保备份的文件不太多,以便仍可以构建项目
  • 第一个是确保您可以构建系统,第二个是允许您清理未使用的文件

    对于这两种情况,包括独立构建系统的版本控制系统是一种可行的方法

    然后,对于每一组新的更改,您可以使用以下步骤来确保这两个条件都成立:

  • 在日常开发系统上,将源代码的新版本签入到版本控制系统中
  • 在单独的生成系统上,获取源代码管理系统的最新版本
  • 在构建系统上构建项目;如果失败,请转至步骤1,并将丢失的文件从开发系统添加到版本控制系统
  • 开始从项目中删除(一个接一个)您怀疑不需要的文件,然后重新生成,直到失败
  • 构建失败时,从版本控制系统还原该特定文件,然后对下一个候选文件继续步骤3
  • 构建成功后,您将拥有最少的文件集
  • 现在对版本控制系统和生成计算机中的文件做一个不同的概述
  • 将版本控制系统中但不在生成计算机上的文件标记为已弃用或已删除
  • 大多数版本控制系统都有很好的方法来生成开发或生成系统上的文件与版本控制系统中的文件之间的差异(通常对于在版本控制系统中添加/删除/更新文件的每个历史时间点都是细粒度的)

    您需要一个单独的构建系统(或两个单独的开发系统)的原因是您希望它们是独立的:您使用一个用于开发,另一个用于检查构建是否仍然正常

    这是将来您可能希望将其扩展到连续集成系统(运行单元测试、自动创建产品设置等)的第一步


    --jeroen

    我不确定您是否询问版本控制或如何确保您已获得所有文件

    我偶尔运行的一个有用的实用程序是一个程序,它可以生成dcu输出文件夹中所有文件的目录列表。将扩展名从.dcu更改为.pas会提供所有源代码文件的列表

    当然,它会遗漏.inc文件和其他非.pas文件,但也许这种思路在某种程度上会对您有所帮助


    这个实用程序对我来说的价值是,第二个内务管理实用程序会列出我的源代码树中没有相应的.dcu文件的所有.pas文件。这(在完全编译所有程序之后)通常会显示一些不再使用的“垃圾”.pas文件

    要获得编译成可执行文件的所有单元的列表,可以让编译器生成映射文件。此文件将包含所有使用单位的条目。

    @Simon我必须承认,版本控制是我感觉在某个地方错过了一个关键事件的因素之一(请注意,我第一次遇到对象时就想到了对象)。我很想听听您对学习曲线/对现有项目管理程序的影响等的评论。我使用Subversion。它是免费的,您可以以简单的方式或更复杂的方式使用它。寻找乌龟。您将需要安装一个SVN服务器,创建一个存储库,然后使用TortoiseSVN来签入和签出您的源代码。我真的花了一点时间看它——我只花了一天左右的时间就明白了out@Simon我在家里从事开发工作。我通过定期增量备份与dropbox保持数据源的同步,这样我就可以从工作地点转移到家中,反之亦然,而且我非常清楚我将要处理的数据源是最新的。SVN会不会妨碍这一点,或者它会提供任何方便的服务?如果您可以在家访问您的工作服务器,那么它将不会有任何问题。Tortoise与SVN服务器的连接非常类似于HTTP-SVN服务器地址如下所示:svn://svnserver/repository. 我也使用从工作和家庭,并可以通过VPN访问。当前来源-没问题,只需选择“更新”即可更新所有代码。如果您在多用户环境中工作,SVN可以将用户编辑“合并”在一起。说真的,安装起来需要一点时间,但我从未回头。我相信这里的大多数人也会高度推荐它。Unfuddle.com+陆龟vn是pa