【问题标题】:Read bare repo files on the fly即时读取裸仓库文件
【发布时间】:2016-07-20 11:59:52
【问题描述】:

有没有办法读取裸仓库的文件?例如,我想分析每个文件并从存储库中提取一些功能,但没有在本地检查整个存储库。

P.S: 理想情况下,想用 C# 来做这个

谢谢

【问题讨论】:

  • 你的问题我不清楚。裸仓库中没有文件。你不能签出整个仓库,只能签出一个分支。您要提取哪些特征?
  • 一些文件分析。问题是,我有多个项目,而且项目很大,我不想以编程方式检查它们,因为这会花费很多时间。我在想是否有一种“即时”的方式" 之前未在本地计算机上签出的情况下签出。就像暂时将它们“存储”在内存中一样。是的,我说的是一个特定的分支
  • 当然。只需签入 RAM 驱动器即可。我认为没有其他受支持的方法。

标签: c# git git-bare


【解决方案1】:

您想要做什么并不完全清楚,但有两种主要方法可以直接从裸存储库中提取数据:

  • 使用git cat-file -p提取对象数据。

    此方法简单易行,但有一个不明显的缺点:不会发生.gitattributes 样式过滤。 (明显的缺点是您必须命名对象,而不能仅使用 OS 例程在文件系统中查找它们。但是,git cat-file 确实使用所有常见的 git rev-parse 规则,因此您如果你知道分支的名称和文件的路径,可以简单地git cat-file -p branch:path/to/file。)

  • 提供工作树。

    例如,git --work-tree=/some/where checkout branch 甚至可以使用裸存储库:--work-tree 提供工作树的顶层。这里的一个(或两个取决于你如何计算)不明显的缺点是签出特定的提交会修改裸存储库的索引和HEAD(当前分支/提交)。索引本身可能会或可能不会以任何其他方式使用;如果不是,这不是问题,如果是,您可能需要使用备用索引(通过环境变量GIT_INDEX_FILE)。 HEAD 被新的 git clone 操作隐式使用(如果这个特定的裸克隆被用作其他克隆的源)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2014-04-04
    • 2013-04-13
    • 2011-10-06
    • 2018-08-26
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多