【问题标题】:Exclude folders from Git code search / create archive branches从 Git 代码搜索中排除文件夹/创建存档分支
【发布时间】:2019-08-16 23:30:00
【问题描述】:

TL;DR 版本

当我在 GitHub 上搜索时,某个文件夹中的文件使我的搜索结果变得混乱。我只需要这些文件用于存档目的,所以虽然我不想删除它们,但我想我可以定期将它们移动到单独的分支以清理 master 中的这个文件夹。

问题是如何以简单、可重复且不会过多污染我的历史的方式做到这一点。

上下文

我(我们)的情况,我们有一个 git 存储库,它保存我们数据模型的当前状态。所以它有一个名为TAB_ORDER.sql 的文件,其中包含用于创建表的create table 语句。 这些文件基本上是使用 RedGate Schema compare 生成的。

此外,存储库包含帮助我们部署更改的迁移脚本。拉取请求预计将包含对目标文件的更改,以及使其在实时数据库上发生的迁移。因此,要向该表添加一列,在单个 PR 中,我将添加一个带有 alter table TAB_ORDER 语句的迁移文件以添加一列,我将修改 TAB_ORDER.sql 以便其中的 create 语句代表新状态表,包括新列。

到目前为止一切顺利。

问题

问题是,我喜欢使用 GitHub 来搜索某些数据库对象的用途,因为它速度很快,而且它允许我搜索我们所有的存储库。但是我的搜索被所有迁移脚本污染了。理想情况下,我想从搜索中排除那些,但 GitHub 不支持,而且看起来不会很快。

所以我基本上有两个选择,除了坚持下去:

  • 完全删除迁移脚本。
  • 将迁移保存在单独的分支中,但不在 master 中。

我更喜欢后者,所以我实际上可以保留我的迁移脚本,如果我愿意,可以搜索这些脚本。当然,已删除的文件会保留在历史记录中,但要找到这些文件并不容易,因此保留它们不被删除是一种偏好。

我的解决方案(我需要帮助)

如何轻松地将这些迁移脚本移动到单独的存档分支。鉴于我希望开发人员通过迁移和修改创建单个 PR,归档将是一个我可以定期执行的单独过程,但我真的不知道将文件从主文件“移动”到基本上是一个分支。

当然也欢迎替代解决方案。

【问题讨论】:

  • 您使用的是 Oracle 还是 SQL Server?我为 Redgate 工作,我们很感兴趣的是您正在脚本文件夹中搜索对象引用。我们想知道是否应该在工具中更好地解决文件搜索而不是文件搜索?
  • 是的,有不同的搜索方式。如果我只在该存储库中搜索,文件是一个选项。我什至可以在数据库本身中进行搜索。但是 GitHub 真的很快(它是一个相当大的 Oracle 数据库),我也用它来搜索其他代码库的其他 repos。特别是如果我想查找其他项目使用了某个数据库对象,GitHub 非常方便,因为我们有几十个存储库,我什至没有将它们全部检出。 GitHub 可以一次搜索所有这些。如果我想检查更改的影响,这是一个非常有用的工具。
  • 明白。感谢您发布解决方案。我也不知道 -path ,所以我也学到了一些东西!为了其他用户的利益,也许我们甚至应该在某个地方记录这个“技巧”:)

标签: git github branch archive


【解决方案1】:

我能想到的最简单的是:

创建存档分支

git checkout -b archive

然后通过以下方式将这些文件复制到您的新存档分支:

git show <branch_name>:path/to/file >path/to/local/file

现在再次检查您的主分支并删除主分支中不需要的文件。

rm file

之后再次更新您的主存储库

git add *    
git commit -m "removed file"    
git push origin master

【讨论】:

    【解决方案2】:

    事实证明,您实际上可以从搜索结果中排除路径。我以前想不通,在搜索时我只发现了不可能的证据。但是一位同事(感谢 Wes!)刚刚向我指出,您可以简单地将 -path 添加到搜索查询中以过滤掉一个文件夹。

    所以要在所有存储库中搜索 TAB_ORDER 的使用,除了 Migrations 文件夹(手指交叉,其他存储库在同名文件夹中没有相关搜索结果),我可以简单地搜索:

    TAB_ORDER -path:Migrations
    

    看起来路径必须是完整路径(相对于 repo),所以如果你有路径 a/b/c,你可以添加 -path:a-path:a/b/c,但不仅仅是 -path:c

    【讨论】:

      猜你喜欢
      • 2010-10-01
      • 2017-10-31
      • 2016-12-08
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 2015-05-10
      相关资源
      最近更新 更多