我如何为整个项目手动生成文本文件以在Visual FoxPro中进行比较例如.sca,.vca等

问题描述

| 面临的挑战是,我正在将我的FoxPro代码检入源代码控制(使用Mercurial,但这不是此问题的重点),并且想要一种快速方法来使FoxPro SCCTEXT输出与二进制输出一起使用而不使用
Tools > Options > Projects > Active source control provider
功能。 作为我要生成输出类型的示例,VFPX源包含许多此类文本.sca,.vca等文件。有什么方法可以按需生成这些文件吗?     

解决方法

这是我用于为Project文件中的每个文件生成SCCText文件的代码。只需打开您的项目(以确保它是活动项目,然后运行此prg文件)。 (2011年6月10日更新:添加了一项新功能,如果原始源文件的日期时间比现有的SCC文件新,则该功能仅会生成新的SCC文本文件。本质上,如果VFP会仅生成一个新的SCC文件,自上次运行以来,源文件已更改。)
lnResponse = MessageBox(\'Run SSCText to generate ascii code files?\',3,\'Generate SCC files?\')

If lnResponse <> 6
    Return
EndIf

*Clear All
*Release All
Set ClassLib to && Must clear them out,cause we\'re about to generate ascii files of them

lnCount = DoSCCTextOnProject()

? Chr(10)+Chr(13)
? \'Done. \' + Str(lnCount) + \' files processed.\'

*----------------------------------------------------------------------
Procedure DoSCCTextOnProject

Local loFile,loProject,lnCount

lcSCCText = Home(1) + \'SCCText.prg\'
lnCount = 0
If !File(lcSCCText)
    Messagebox(\'Unable to find file \' + lcSCCText,16,\'Error\')
    Return 0
Endif

Try
    loProject = _vfp.ActiveProject
Catch To loEx
Endtry

If Type(\'loEx\') = \'O\'
    Messagebox(\'There are no active projects\',64,\'Error\')
    Return 0
Endif

lcSkipFiles = \'LIST-FILES-TO-SKIP-HERE\'

For Each loFile In loProject.Files

    If Inlist(loFile.Type,\'V\',\'K\',\'R\') and ;
         !InList(Upper(JustFname(loFile.name)),Upper(lcSkipFiles)) ;
         and Fdate(loFile.name,1) > SCCFileDateTime(loFile.name)
                ? \'Generating: \' + loFile.Name
                Do (lcSCCText) With loFile.Name
                lnCount = lnCount + 1 
    Endif
Endfor 

Return lnCount

*------------------------------------------------------------------
Procedure SCCFileDateTime(tcFile)

    lcSCCFilename = Upper(Strtran(Upper(tcFile),\'.SCX\',\'.SCA\'))
    lcSCCFilename = Strtran(lcSCCFilename,\'.VCX\',\'.VCA\')
    lcSCCFilename = Strtran(lcSCCFilename,\'.FRX\',\'.FRA\')

    If File(lcSCCFilename)
        Return Fdate(lcSCCFilename,1)
    Else
        Return {^1900-01-01 00:00:00}
    EndIf
EndProc
    ,您可以设置scctext.prg(随VFP一起提供)并使用项目挂钩来生成文件,而不是设置源代码控制提供程序,有关使用Subversion的示例实现,请参见http://paulmcnett.com/scX.php。 编辑:您是否看过Codeplex上的备用SCCText 另请参见http://www.foxpert.com/docs/cvs.en.htm。