gitlab类 ls方法及getCommitsByPath方法的错误
2021-09-23 13:16:29
momo
  • 访问次数: 13
  • 注册日期: 2021-04-29
  • 最后登录: 2021-09-24
  • 我的积分: 106
  • 门派等级: 无门派

class gitlab {

        // ...

    public function ls($path, $revision = 'HEAD')
    {
        // ...

        $infos = array();
        foreach($list as $file)
        {
            if(!isset($file->type)) continue;

            $info = new stdClass();
            $info->name = $file->name;
            $info->kind = $file->type == 'blob' ? 'file' : 'dir';

            if($file->type == 'blob')
            {
                $file = $this->files($file->path, $this->branch);

                $info->revision = zget($file, 'revision', '');
                $info->comment  = zget($file, 'comment', '');
                $info->account  = zget($file, 'committer', '');
                $info->date     = zget($file, 'date', '');
                $info->size     = zget($file, 'size', '');
            }
            else
            {

               // <<=============================

              // 在 getCommitsByPath()方法中会使用 urldecode解码, 但是传的参数确没有urlencode编码, 

              // 如此会导致 请求gitlab时, 使用错误的路径. 比如 $file->path = 'xxx+xxx' , 把这个+号直接替换成空格了, 

              // 再比如 $file->path = '%xx%xx' , 这是一个合法的名字, 却接url编码解码了.

                $commits = $this->getCommitsByPath($file->path);
                if(empty($commits)) continue;
momo 最后编辑, 2021-09-23 13:17:30
沙发
2021-09-23 14:01:11
禅道-Bee
  • 访问次数: 3855
  • 注册日期: 2017-02-22
  • 最后登录: 2021-10-18
  • 我的积分: 36587
  • 门派等级: 幽灵 等级5 天魔
谢谢您的反馈,这儿我们反馈给相关同事确认下。
板凳
2021-09-23 15:02:25
丁国栋
  • 访问次数: 9
  • 注册日期: 2021-08-11
  • 最后登录: 2021-09-29
  • 我的积分: 72
  • 门派等级: 释迦 等级1 居士

您好,感谢您的反馈,请问您这是在使用禅道中的哪一个功能遇到问题了?是版本库浏览页面遇到的问题吗?

#3
2021-09-24 08:57:43
momo
  • 访问次数: 13
  • 注册日期: 2021-04-29
  • 最后登录: 2021-09-24
  • 我的积分: 106
  • 门派等级: 无门派

随便来个gitlab版本库, 路径上带+号就可以看见问题.

或者类似    %20%2B%2F    这样的名字. 

momo 最后编辑, 2021-09-24 09:00:24
#4
2021-09-29 17:04:24 回复 #3
丁国栋
  • 访问次数: 9
  • 注册日期: 2021-08-11
  • 最后登录: 2021-09-29
  • 我的积分: 72
  • 门派等级: 释迦 等级1 居士
原帖由 momo 于 2021-09-24 08:57:43 发表

随便来个gitlab版本库, 路径上带+号就可以看见问题.

或者类似    %20%2B%2F    这样的名字. 


您好,路径中带+号未能复现,如上面2楼帖子图片所示。   “%20%2B%2F”这种的文件已经复现,我们这边做一下改进。感谢您继续反馈。


1/1