问题标签 [gitweb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
490 浏览

git - 将 gitweb 查询字符串转换为 cgit 查询

我正在尝试以编程方式将 gitweb 格式的查询字符串映射到 cgit 查询字符串,以完全过渡到 cgit,而不会破坏旧的基于 gitweb 的 url,这些 url 指向我散布在网络上的存储库。我见过一些基于正则表达式的 URL 重写规则,如下所示:

http://www.clearchain.com/blog/posts/cgit-upgrade-gitweb-retired

但我试图真正理解查询字符串中的变量以确保我做对了,我将使用一个小型 CGI 程序而不是 mod_rewrite 或任何对重新映射的操作。特别是,我不了解 、 和哈希的语义h以及hb它们hp如何映射到 cgit 的id不同类型查询的查询变量。

任何熟悉他们的人都可以填写我或将我指向一个好的资源吗?

0 投票
1 回答
2208 浏览

git - git 仅向某些用户显示 gitweb 中的存储库

我一开始正在尝试实现一个只有一个开发人员的 git 服务器,所以只有一个具有完全访问权限的开发人员。我已经没有问题了。该用户正在使用 ssh 访问进行工作​​。

而且我想与在 apache 上运行的某种 GUI(gitweb、gitlist、gitalist ......)共享对项目的只读访问权限,这些 GUI 可以向特定用户显示我选择的存储库,也许还有一些完全公开的。就像是:

  • 回购 x - user1 和 user3 的读取权限
  • Repo y - user1 和 user2 的读取权限
  • Repo z - 所有用户的读取权限。

我无法找出执行此类操作的正确解决方案。

我可以找到有关如何进行身份验证以仅向经过身份验证的用户显示存储库的文档,但不是对存储库的细粒度控制,以仅向每个经过身份验证的用户显示一些存储库,其中一个 GUI 在 apache 上运行。

我已经使用 webmin git 模块尝试了带有 dav 的 gitweb,但是所有存储库都显示在 gitweb 中,无论我进行身份验证的用户只能访问某些存储库而不是全部。

网络服务器正在使用用户 git 运行 suexec,并且对存储库具有完全的读取权限。

应该如何实施这样的事情?也许是一些钩子?

此外,我只对允许用户下载项目的打包 tar.gz 的选项真正感兴趣。不打算允许用户与项目协作。也许解决方案不是这个。如果 trac 系统是更好的解决方案,它也可能很有趣,因为它能够接收有关项目的反馈。

0 投票
2 回答
1305 浏览

git - Ubuntu:gitweb 总是在 /var/cache/git 中寻找项目(“404 - 未找到项目”)

在Ubuntu 12.04(64 位)服务器上安装gitweb$projectroot并将变量更改为 以外的/usr/share/gitweb/gitweb.cgi任何目录/var/cache/git后,项目仍会在/var/cache/git.

这发生在 Ubuntu 的gitweb包 (1.7.9.5) 以及克隆 Git 的存储库和编译最新的稳定分支 (1.8.0.1) 中。

该问题也可以在 Apache 的 gitweb 站点上以“404 - 未找到项目”的形式出现,因为项目将位于与/var/cache/git.

0 投票
1 回答
100 浏览

perl - Gitweb Apache 输出不同于终端

Apache 的配置如下:

我正在尝试设置 Gitweb,但我不断遇到可怕的404 - No projects found问题。通常这是一个权限错误,所以我想看看 perl 是否打印了没有权限的东西,所以我用这个命令从终端运行它

该脚本与正确列出所有存储库的 HTML 相呼应(即,没有 404)。

这是一个问题:为什么相同的脚本会从 Apache 运行而终端的行为会有所不同?

0 投票
1 回答
5583 浏览

git - gitweb 和每个项目的 http 身份验证

我已经成功地在所有经过身份验证的用户都可以访问的 apache vHost 上设置了 gitweb。

服务器本身通过 https 提供了几个 git 存储库,并且每个用户/组都可以访问这些项目。例如 test1.git 只能被 test1 组读写,而 test2.git 只能被 test2 组读写。

现在我还希望只有这些组在 gitweb 界面中看到他们相应的 git 存储库。是否有可能对 gitweb 拥有这些精细的访问权限?

如果没有,是否有用于 git 的轻量级 web gui,它可以处理每个项目的基本 http 身份验证(以及以后可能的 ldap 身份验证)?

编辑 只是为了让事情更清楚(因为评论似乎有些混乱):示例:

  • 有 10 个存储库(test1、test2、... test10)

  • 用户lockdoc在组test1test3

  • 一旦使用用户名lockdoc和他/她的密码通过 http 进行身份验证,该用户只能看到 git 项目test1test3并且不能浏览/查看任何其他项目

  • 无需在 Web 界面上写入(推送),因为这已经实现

0 投票
1 回答
186 浏览

git - SourceForge Wiki:如何在 git repo 中添加指向源的永久链接

我为一个sourceforge 项目创建了一个Wiki。在主页中,我在 git 树中放置了一些代码示例的链接。我经常提交,然后链接就过时了。

如何将 http 链接放在 master 分支上的最新版本?

以下是链接示例:https://sourceforge.net/p/jdcf/code/ci/414b9c83de3a5a9f34303c4bb888b715ff6bbecb/tree/src-demo_01/org/dcf/demo/consumer/Component.java

/414b9c83de3a5a9f34303c4bb888b715ff6bbecb/是我想的版本,我希望将其替换为LATEST. 我如何能?

0 投票
2 回答
1427 浏览

git - 子目录的 gitweb 快照

调用 URLhttp://<gitweburl>/gitweb.cgi?p=<repo>;a=tree;f=<subdir>;hb=HEAD将显示<repo>从 开始的树<subdir>

调用 URLhttp://<gitweburl>/gitweb.cgi?p=<repo>;a=snapshot;f=<subdir>;hb=HEAD将产生 404。

调用 URLhttp://<gitweburl>/gitweb.cgi?p=<repo>.git;a=snapshot;h=HEAD将提供<repo>HEAD 修订的快照。

我找不到正确的语法来让 Gitweb 从子目录开始提供快照。我的意思是导致:$ git archive --format=tar --remote=<gituser>@<gitserver>:<repo> HEAD:<subdir>

我天真地尝试调用 URLhttp://<gitweburl>/gitweb.cgi?p=<repo>;a=snapshot;h=HEAD;f=<subdir>但这会导致包含整个存储库的快照存档

在 Gitweb 网络界面中单击后,我发现,更改为“树”视图并移动到<subdir>然后单击“快照”使用类似于以下的 URL:

http://<gitweburl>?p=<repo>;a=snapshot;h=42a6503da6aaedc92bb3543e0b0de9b2de0aaae9;sf=tgz

这正是我想要的,但我不知道这个哈希参数h=...是什么。这不是提交 ID - 我已经检查过了。它必须以某种方式识别<subdir>。但即使它确实如此 - 这仍然对我没有帮助,因为有人只想从/包含开始的快照<subdir>通常不知道这个哈希值。

关于如何通过 Gitweb 获取子目录快照的任何想法?提前致谢!


添加:

刚刚发现:h=42a6503da6aaedc92bb3543e0b0de9b2de0aaae9<subdir>可见相关的哈希值是否由例如$ git ls-tree -r -t HEAD

所以这两个命令:

$ git archive --format=tar --remote=<gituser>@<gitserver>:<repo> HEAD:<subdir>

$ git archive --format=tar --remote=<gituser>@<gitserver>:<repo> 42a6503da6aaedc92bb3543e0b0de9b2de0aaae9

做同样的事情,让我认为这是等效的。我仍然不能只用. 调用此 URL 会导致“400 - 无效的哈希参数”......所以这里没有真正的进展。HEAD:<subdir>42a6503da6aaedc92bb3543e0b0de9b2de0aaae9http://<gitweburl>?p=<repo>;a=snapshot;h=42a6503da6aaedc92bb3543e0b0de9b2de0aaae9;sf=tgzHEAD:<subdir>


正如 poke 所建议的,一个快速的肮脏黑客使用URL http://<gitweburl>/gitweb.cgi?p=<repo>;a=snapshot;h=HEAD;f=<subdir>

0 投票
4 回答
2117 浏览

git - 如何在 gitweb 中查看除 master 以外的分支?

我希望能够看到我对 master 以外的分支中的文件所做的更改。有没有办法做到这一点?

此外,如果我可以区分多个分支的头部,例如 MyBranch 的 HEAD 和 master 的 HEAD,那就太好了。

0 投票
1 回答
150 浏览

git - 为什么 git 有时会显示文件已更改但未更改?

DragonFly BSD 使用 git 作为其 SCM,为内核和整个用户空间提供一个单一的存储库和分支。

在 2011 年 11 月 26 日,有人做了一个提交,以某种方式触及了存储库中的每个文件,尽管大多数文件根本没有更改。

这是 2011 年 11 月 26 日的违规提交:http:
//gitweb.dragonflybsd.org/dragonfly.git/commitdiff/86d7f5d305c6adaa56ff4582ece9859d73106103
https://github.com/DragonFlyBSD/DragonFlyBSD/commit/86d7f5d305c6adaa56ff4562ece939

从那时起,使用一些工具,如果您查看存储库中任何文件的文件历史记录,您可以看到它在 2011 年 11 月 26 日随该提交而更改,但它仅显示在某些工具中,而未显示在其他。

例如,以下工具不会显示虚假的 2011-11-26 提交:

但是,虚假提交错误地显示如下:

  • git whatchanged --pretty=%at sys/sys/sensors.h

    1322296064 时间是假的,请注意文件是如何被 dd 的A而从未被删除,并且dstsha1 是相同的。另一个更具代表性的例子,它表明srcsha1 总是0000000...在这样的虚假提交中,尽管当你考虑到该文件从未被删除并且仍然具有相同的dstsha1 时它几乎没有意义:

    /li>
  • http://gitweb.dragonflybsd.org/dragonfly.git/history/HEAD:/sys/sys/sensors.h

我的问题如下:

  • 如何在不首先删除文件的情况下添加文件?允许这样的事情是/是git中的一个错误吗?

  • 为什么有些工具会压缩此类虚假提交(并向用户隐藏它们),而有些工具却没有?

  • 有没有办法在实际上没有修改的文件上进行git-whatchangedgitweb忽略此类虚假提交,就像git-log这样github做一样?

0 投票
1 回答
117 浏览

git - 在 gitweb 中,如何在合并提交上进行差异时设置父级?

请注意,这个问题是关于 GITWEB,而不是 git。我知道如何在 git 中执行此操作,但我希望能够在 gitweb 中执行它,以便我可以轻松地向与我一起工作的人展示我的更改。

如果我有一棵看起来像这样的树:

我希望能够看到 B 和 D 之间的差异。这应该显示 A & B 与 C & D 的变化。但是,当我使用 git web (指定提交哈希)时,它只显示了 D 中的内容. 在合并提交上使用 commitdiff 时,有什么方法可以设置父级?