2013-05-08 62 views
4

说我有路径C:\My\Multi\Component\Path。由于外壳在Windows普遍忽视我可以混合和匹配我请浏览到这个相同的节点在文件系统在PowerShell中的任何外壳:如何映射路径以正确覆盖svn使用的底层位置

1PS> cd C:\My\Multi\Component\Path 
2PS> cd C:\my\multi\component\path 
3PS> cd C:\My\multi\component\path 
4PS> cd C:\my\Multi\Component\PATH 

问题是,当我使用svn命令行工具,例如, svn log .。这个只有如果我用上面的第(1)行来设置位置,即使用与底层路径相匹配的确切套管,它就可以工作。如果我有2,3或4设置的位置,SVN有不太愿意,例如:

svn: svn: E155010: The node 'C:\My\multi\component\path' was not found. 

我明白一个事实,即SVN是区分大小写的,而Windows未导致问题,我可以以此为生。但是我想要一个解决方法,即:在PowerShell中查找底层的,最初创建的路径。然后我可以通过这个规格化过滤器发送我的路径,然后将它交给svn。不幸的是,PowerShell拒绝为我提供真正的基础路径。我已经检查了Get-Location,Get-Item和Get-ChildItem的所有属性。

有没有办法获得真正的道路?

+0

正如您所注意的,NTFS并没有真正具有区分大小写的对象名称的概念。你需要做的是编写自己的函数,返回父文件夹,然后递归地返回构建正确套用路径的目录结构。这里是一个.Net示例:http://stackoverflow.com/questions/325931/getting-actual-file-name-with-proper-casing-on-windows-with-net – EBGreen 2013-05-08 19:22:37

+0

由于我无法解释的原因(所以我不会让它成为答案),'svn log $ pwd'可以正确地复制你的位置#2。然而,'$ pwd'只能返回不正确的路径。 – alroc 2013-05-08 20:17:03

+0

@alroc:确实有用 - 很棒!现在你可以将它推广到任意路径而不是_current_路径吗?我的意思是,可以输入相当于'svn log path'而不是'cd path; svn日志。“? – 2013-05-08 21:50:18

回答

1

我已使用svn log $pwd进行过测试,它在所有情况下都会产生预期结果。

+0

作为作业,现在你只需要解释_why_它的工作原理:-) ... – 2013-05-09 17:29:16