我应该如何在同一路径中控制(排序)不相关的脚本?

时间:2011-08-15 20:34:20

标签: git version-control powershell mercurial dvcs

我已经开始使用版本控制来更好地管理PowerShell代码的修订。我决定使用Mercurial有三个主要原因:

  1. 作为DVCS,它不需要服务器。
  2. 如果我愿意,我可以免费在线存储私人资料库(bitbucket.org)
  3. 使用它似乎比Git简单。
  4. Mercurial适用于版本化PowerShell模块,因为每个模块都包含在自己的目录中。但是,我有一些不属于模块的脚本,但我仍然希望对它们进行版本控制。这些脚本位于添加到$env:PATH的“。\ Scripts”目录中,因此我可以从命令行轻松运行它们。由于这些脚本并不真正相互关联,因此为Scripts目录创建单个存储库没有多大意义。

    我应该如何编写单个脚本?

    我想到了以下几个选项:

    • 为每个脚本/相关脚本创建子目录。
    • 使用临时存储库,直到脚本“稳定”,然后将脚本添加到主“Scripts”目录,并将脚本集合版本化为一个。这将减少引入“Scripts”存储库的更改集的数量。

    是否有更好的处理单个文件版本的工具?使用Mercurial版本化单个文件有更好的方法吗?还有其他想法吗?

3 个答案:

答案 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/

我已经按照这种方法发现它非常有用。我发现源代码控制有用的两个原因:

  1. 度过了糟糕的一天并重写了一个脚本,这样它就不会做你想要的任何事情,你就不记得怎么回来了!

  2. 需求的变化,有时你需要一个脚本来监控或做一些短时间的事情,然后需要它恢复到原来的设置。使用源代码控制轻松完成。

  3. 因此,在一个仓库中拥有所有脚本并不是真正的问题。

    我确实想知道你是否可以用它来同步计算机(自动而不是在需要时推动\拉)但这不是我有时间看的东西。