如何获得按提交时间排序的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命令并没有按照我想要的方式对它们进行排序
如果我将旧的repo复制到存储库目录($SYSTEM_PATH/repos/(中,它们将显示在列表的顶部。

此命令返回最后一次提交时间(unix时间戳(:

git log -1 --format=%ct

然而,我还没有设法将所有这些结合起来,以有效的方式实现我想要的。


感谢您帮助我实现这一目标,我感谢这个社区教会我的一切


相关问题:

  • 最后一次git提交时间:如何从git存储库中获取最后一次提交日期
  • 分支也是如此:如何获得Git分支的列表,按最近提交的顺序排列

您需要进入循环中的每个存储库,以可排序的格式输出最后一个提交时间戳(让我们使用unix时间(,排序并输出排序的repo名称:

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}'

最新更新