Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 我应该如何在同一路径中控制(排序)不相关的脚本?_Git_Version Control_Powershell_Mercurial_Dvcs - Fatal编程技术网

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

Git 我应该如何在同一路径中控制(排序)不相关的脚本?,git,version-control,powershell,mercurial,dvcs,Git,Version Control,Powershell,Mercurial,Dvcs,我已经开始使用版本控制来更好地管理对PowerShell代码的修订。我决定使用Mercurial有三个主要原因: 作为DVCS,它不需要服务器 如果我愿意,我可以免费在线存储一个私有存储库(bitbucket.org) 它似乎比Git更易于使用 Mercurial非常适合对PowerShell模块进行版本控制,因为每个模块都包含在自己的目录中。但是,我有一些不属于模块的脚本,但我仍然希望对它们进行版本设置。这些脚本位于添加到$env:PATH的“\scripts”目录中,因此我可以从命令行轻松运

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

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

    如何对单个脚本进行版本设置?

    我想到了以下几种选择:

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

    是否有一种工具可以更好地处理单个文件的版本控制?使用Mercurial对单个文件进行版本控制有更好的方法吗?还有其他想法吗?

    基于功能的文件分组应基于

    1) 名字

    2) 它们所在的文件夹

    只需为脚本指定一个正确的名称。如果有多个相关脚本,请将它们分组到一个文件夹中。每个文件夹有一个脚本是没有意义的。最终得到的文件夹数量几乎与脚本相同

    所有这些都集中在一个存储库中。通常,人们在一次回购中有多个项目。创建多个repo,特别是为几个文件创建多个repo,意味着大量开销。如果脚本不“稳定”,请使用分支。这就是它们的用途,并将它们合并回来

    不要担心回购协议中有多少“变更集”


    PS:可能看起来有点固执己见,但对于你所问的问题,没有真正正确或错误的答案。

    退后一步,放松,问问自己这是否正确。使用VCS的一个主要好处是,您无需担心从“完美”解决方案开始。DVCS曲目(使用
    hg mv
    ,或尝试使用
    hg addremove--similarity
    自动检测)

    这些脚本位于添加到$env:PATH的“.\scripts”目录中,因此我可以从命令行轻松运行它们。因为这些脚本之间并没有真正的关联,所以为脚本目录创建单个存储库没有多大意义

    如果脚本都在同一个目录中,那么在同一个存储库中跟踪它们肯定是有意义的

    • 使用临时存储库,直到脚本“稳定”
    “临时”回购违背了回购的目的,即有一个变化的历史

    这将减少引入“脚本”存储库的变更集数量

    正如@manojlds所说,没有理由担心变更集的数量。没有

    我的忠告是:

    • 将您的实验脚本放在一个目录中,如
      /scripts/incubating/
    • 当脚本成熟时,将其放入
      /Scripts/
      /Scripts/Foo/
      或任何东西中使用
      hg mv
      帮助Mercurial跟踪移动/重命名
      • 或者使用
        hg addremove--similarity
        自动检测移动/重命名
    • 脚本的更改历史记录将被保留,您可以随着集合的发展重新组织脚本目录

      • 我认为这里的小伙子们有一些好主意,并指出你可能过于关注它了。要获得完全无忧无虑的源代码管理,请参阅Tome指南

        我遵循了这个方法,发现它非常有用。我发现源代码管理有用的两个原因:

      • 糟糕的一天,重写了一个脚本,这样它就不会做任何你想做的事情,你也记不起如何找回它了

      • 在需要更改时,有时您需要一个脚本来监视或执行一些短时间的操作,然后需要它恢复到原始设置。轻松完成源代码控制

      • 因此,将所有脚本放在一个回购协议中并不是一个真正的问题


        我确实想知道你是否也可以用它来同步计算机(在需要时自动而不是推拉),但我没有时间去看它

        谢谢你的回答。我知道,对于类似SVN的VCS,多个项目通常分组为一个回购,但Mercurial提交是在回购级别进行的。因此,项目通常是分开的(见:)。我同意将脚本放在单独的文件夹中是没有效率的,但是提交一堆不相关的脚本似乎也不是很有组织。这感觉就像我在尝试选择两种邪恶中的较小者;我只是想征求意见。@Rynant-这是我对Git-的一个类似问题的回答。我明白,但你是在文件层面上说的,那也是脚本(文本)文件。在这种情况下,有不同的回购协议会带来更大的伤害。我将把脚本文件夹中的所有内容都作为一个回购协议保存。每个模块都有自己的repo和我在另一个repo中的所有配置文件脚本。我完全同意这里的@manojlds。实际上,我有一个“Projects\Modules”文件夹,我在其中放置我正在处理的模块项目,原因是:我将整个WindowsPowerShell文件夹放入mercurial,我不能为实际项目的子回购而烦恼。@Jaykul-如果ShowUI是与其他模块回购的一部分,你如何处理将其推送到/从codeplex中拉出?谢谢你的建议;我想我可能受到了分析瘫痪的打击:-/对于我来说,有一个配置对等SQL repl的脚本感觉很奇怪