Kit*_*oed 5 diff foxpro visual-foxpro
挑战是我正在检查我的FoxPro代码到源代码控制(使用Mercurial,但这不是这个问题的焦点),并希望快速获得FoxPro SCCTEXT输出和二进制输出而不使用该Tools > Options > Projects > Active source control provider功能.
有关我想要生成的输出类型的示例,VFPX源包含许多这些文本.sca,.vca等文件.有没有办法按需生成这些文件?
您可以破解scctext.prg(随VFP提供)并使用项目挂钩生成文件,而不是设置源控件提供程序 - 有关使用Subversion的示例实现,请参阅http://paulmcnett.com/scX.php.
编辑:你看过Codeplex上的Alternate SCCText吗?
另请参阅http://www.foxpert.com/docs/cvs.en.htm以获取另一个视角.
以下是我用来为项目文件中的每个文件生成 SCCText 文件的代码。只需打开您的项目(以确保它是活动项目,然后运行此 prg 文件)。
(2011-06-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
Run Code Online (Sandbox Code Playgroud)