我已经开始使用版本控制来更好地管理PowerShell代码的修订。我决定使用Mercurial有三个主要原因:
Mercurial适用于版本化PowerShell模块,因为每个模块都包含在自己的目录中。但是,我有一些不属于模块的脚本,但我仍然希望对它们进行版本控制。这些脚本位于添加到$env:PATH
的“。\ Scripts”目录中,因此我可以从命令行轻松运行它们。由于这些脚本并不真正相互关联,因此为Scripts目录创建单个存储库没有多大意义。
我应该如何编写单个脚本?
我想到了以下几个选项:
是否有更好的处理单个文件版本的工具?使用Mercurial版本化单个文件有更好的方法吗?还有其他想法吗?
答案 0 :(得分:10)
基于文件功能的文件分组应基于
1)姓名。
2)他们所在的文件夹。
只需为脚本命名即可。如果有多个相关脚本将它们分组到一个文件夹中。每个文件夹有一个脚本是没有意义的。您最终得到的文件夹数与脚本几乎相同。
所有这些都在一个存储库中。通常,人们在一个回购中有多个项目。创建多个repos,特别是对于少量文件意味着很多开销。如果脚本不“稳定”使用分支。这就是它们的用途,并将它们合并。
不要担心回购中有多少“变更集”!
PS:可能看起来有些自以为是,但对于你提出的问题,没有正确或错误的答案。答案 1 :(得分:4)
退后一步,放松一下,问问自己这是premature optimization。使用VCS的一个主要好处是,不需要担心从“完美”解决方案开始。 DVCS跟踪change history across renames & moves(使用hg mv
,或尝试使用hg addremove --similarity
进行自动检测)。
这些脚本位于“。\ Scripts”目录中,该目录已添加到$ env:PATH中,因此我可以从命令行轻松运行它们。由于这些脚本并不真正相互关联,因此为Scripts目录创建单个存储库没有多大意义
如果脚本都在同一个目录中,当然在同一个存储库中跟踪它们是有意义的。
- 使用临时存储库,直到脚本“稳定”......
“临时”回购会破坏了拥有回购历史的目的,即拥有变更历史。
这将减少引入“Scripts”存储库的更改集的数量。
正如@manojlds所说,没有理由担心变更集的数量。无。
我的建议:
./Scripts/incubating/
./Scripts/
或./Scripts/Foo/
或其他任何内容; 使用hg mv
帮助Mercurial跟踪移动/重命名 hg addremove --similarity
自动检测移动/重命名答案 2 :(得分:2)
我认为这里的章节有一些好主意,并指出你可能会过分关注它。有关完全无忧的源代码控制,请参阅Tome的指南http://powertoe.wordpress.com/2010/12/12/why-every-it-pro-should-use-mercurial-for-source-control-with-their-powershell-scripts/
我已经按照这种方法发现它非常有用。我发现源代码控制有用的两个原因:
度过了糟糕的一天并重写了一个脚本,这样它就不会做你想要的任何事情,你就不记得怎么回来了!
需求的变化,有时你需要一个脚本来监控或做一些短时间的事情,然后需要它恢复到原来的设置。使用源代码控制轻松完成。
因此,在一个仓库中拥有所有脚本并不是真正的问题。
我确实想知道你是否可以用它来同步计算机(自动而不是在需要时推动\拉)但这不是我有时间看的东西。