用于将Subversion(SVN)符号链接文本文件转换为NTFS符号链接的批处理脚本

时间:2012-10-12 11:13:46

标签: windows svn unix batch-file symlink

我们的设置:
我们使用混合的Windows XP和Windows 7机器进行开发,以及一些unix服务器,它们拥有我们的Subversion(SVN)存储库并托管我们的网站。 我们的网站存储在SVN仓库中,因此当需要对网站进行更改时,我们会将SVN的工作副本签出到我们的Windows机器上。完成所有更改后,我们将工作副本提交回SVN repo,并且bash脚本将repo的头部部署到Web服务器。 (相当标准的东西)

我的问题:
该网站使用(unix)符号链接(不能替换)。检查出来并从unix服务器提交工作正常,符号链接存活下来。但由于我们使用的是Windows开发机器,SVN不会自动将符号链接的表示转换为Windows / NTFS符号链接,即使它们受支持(我们的Windows XP机器安装了相关的驱动程序)。 SVN符号链接是没有扩展名的文件,包含:

link  /path/link/was/pointing/to

我的问题:
我不熟悉批处理脚本(用于unix bash脚本)。 有关如何最好地将SVN的文本符号链接转换为批处理脚本中正常工作的Windows / NTFS符号链接的任何指导都将非常受欢迎。

如果我将一个Windows符号链接提交给SVN回购,会发生什么?
我是否需要第二个脚本将Windows符号链接转换回SVN文本链接? 后者会破坏Unix端的SVN文本链接到Unix符号链接转换吗?

1 个答案:

答案 0 :(得分:1)

我建议进入VBScript和Windows Script Host。说,我有一个名为C:\Temp\Hello.txt的文件,我想创建一个链接C:\Temp\Sample。我将创建一个名为MakeSample.vbs的脚本,如下所示:

Set WshShell = CreateObject("Wscript.shell")
Set oMyShortcut = WshShell.CreateShortcut("C:\Temp\Sample2.lnk")
oMyShortcut.WindowStyle = 3
oMyShortcut.TargetPath = "C:\Temp\Hello.txt"
oMyShortCut.Save

在VBScript中读取LINK文件很简单,例如:

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\Temp\linkfile.")
txt = f.ReadAll
f.Close
MsgBox txt

我认为使用上述内容作为起点来破解某些内容应该相对简单。