php - 如何获取按提交时间排序的 git 存储库列表?
问题描述
我建立了自己的服务器来托管一些私有 git 存储库。
我正在研究我的私人“回购库”的视觉表示(使用 php 后端)。
这一切都很好,我可能会在某个时候开源它。
我当前的问题:创建所有存储库的列表(我已经这样做了),它按最后提交时间排序(到主分支)。
我目前使用这个函数来获取我的(裸)git 存储库的列表:
function listRepositories() {
global $SYSTEM_PATH;
exec("ls $SYSTEM_PATH/repos/ -t", $repoDirectories);
$repos = array_map(function($repo) {
return str_replace("$SYSTEM_PATH/repos/", "", $repo);
}, $repoDirectories);
return $repos;
}
但是,ls $SYSTEM_PATH/repos/ -t
我目前用来获取 repos 列表的命令并没有按照我想要的方式对它们进行排序。
如果我将较旧的存储库复制到存储库目录 ( $SYSTEM_PATH/repos/
),它们会出现在列表顶部。
此命令返回最后一次提交时间(unix 时间戳):
git log -1 --format=%ct
但是,我还没有设法将所有这些结合起来以有效的方式实现我想要的。
感谢您帮助我实现它,我感谢这个社区教给我的一切!
相关问题:
- 上次 git 提交时间:如何从 git 存储库获取上次提交日期?
- 分支也是如此:如何获取按最近提交排序的 Git 分支列表?
解决方案
您需要循环进入每个存储库,以可排序的格式输出最后提交时间戳(让我们使用 unix 时间),排序并输出排序的存储库名称:
find $SYSTEM_PATH/repos/ -maxdepth 1 -type d |
while read repo; do
git -C "$repo" --no-pager log -1 --format="%ct $repo" 2>/dev/null
done | sort -nr | awk '{print $2}'
推荐阅读
- javascript - jest.config.js 失败 - 意外令牌“。” 在 module.exports 中
- python - 字典可能包含字符串或数组
- shell - 如何通过 API 调用找到最新的稳定 Jenkins 版本?
- ajax - Axios asynchrone ajax 请求 Vuejs 不等待服务器响应
- java - 在 Spring Boot 中 FindByIndexNameSessionRepository 不能为空
- python - 我试图使用 pandas 将两个具有相同请求 ID 的数据帧组合起来,但无法
- r - 在 r 中使用 cat 时如何在换行符后删除不需要的空格
- javascript - 检查Javascript(或框架)中是否存在字段的正确方法?
- ios - 预览因核心数据查找而失败,但在 Swift 5 / Core Data / FetchRequest 中使用随机值
- mysql - 将字符串与 MySQL 中的 INT 列进行比较是否有问题