Php 如何获得按提交时间排序的git存储库列表?

Php 如何获得按提交时间排序的git存储库列表?,php,linux,git,Php,Linux,Git,我设置了自己的服务器来托管一些私有git存储库 我正在研究我的私有“回购基础”的可视化表示(使用php后端)。 这一切都很好,我可能会在某个时候将其开源 我当前的问题是:创建一个所有存储库的列表(我已经这样做了),该列表按上次提交时间(到主分支)排序 我目前使用此函数获取我的(裸)git存储库列表: 函数listRepositories(){ 全球$SYSTEM_路径; exec(“ls$SYSTEM\u PATH/repos/-t”,$repos目录); $repos=数组映射(函数($re

我设置了自己的服务器来托管一些私有git存储库

我正在研究我的私有“回购基础”的可视化表示(使用php后端)。
这一切都很好,我可能会在某个时候将其开源


我当前的问题是:创建一个所有存储库的列表(我已经这样做了),该列表按上次提交时间(到主分支)排序

我目前使用此函数获取我的(裸)git存储库列表:

函数listRepositories(){
全球$SYSTEM_路径;
exec(“ls$SYSTEM\u PATH/repos/-t”,$repos目录);
$repos=数组映射(函数($repo){
返回str_replace(“$SYSTEM_PATH/repos/”,“”,$repo);
}美元(目录),;
返回$repos;
}
但是,我当前用于获取回购列表的ls$SYSTEM\u PATH/repos/-t命令并没有按照我想要的方式对它们进行排序。
如果我将旧的repo复制到存储库目录(
$SYSTEM\u PATH/repos/
),它们将显示在列表的顶部

此命令返回上次提交时间(unix时间戳):

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


谢谢你帮助我实现了这一目标,我很感激这个社区教会我的一切


相关问题:

  • 上次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}'

您需要进入循环中的每个存储库,以可排序的格式(让我们使用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}'