自定义同步失败

你好呀

我设置了自定义的脚本

直接执行脚本是可以同步的

image.png

但是通过工具就不行,可以帮我看下是什么问题?

image.png

image.png

push.sh脚本

image.png

2019-12-07 03:16 from Ling Sun
Comments
Write a Comment
  • Hepochen reply

    @Ling Sun, 试一下完全的路径? 而不是 ./ 这样的相对路径。

  • Hepochen reply

    @Ling Sun, 以及应该是 /bin/sh full_script_path 的方式, MarkEditor 对于脚本文件的调用,是没有系统 Env 的判断的。想象有点像 Linux 上的 crontab

  • Ling Sun reply

    我试了下完全路径,是不行。 请问”应该是 /bin/sh full_script_path 的方式” 是什么意思呢?

    • Hepochen reply

      @Ling Sun, 就是在全路径之前加上 /bin/sh

  • Ling Sun reply

    虽然没有报错了,但是还是不能同步,好奇怪!

    • Hepochen reply

      @Ling Sun, 或许你在 push.sh 内的 git 也要有完整的路径。

      另外,在 push.sh 内的 cd,是否会影响到 『调用的再调用』 的上下文环境,我也不确定。

      cd 当前的ME工作目录 && /bin/sh xxxxxx.sh,或许能解决这个问题,因为 ME 在调用脚本的时候,会尝试改变当前的上下文目录。

      简单的来说,就是在这个时候的调用,不要对任何系统环境有依赖,比如我们输入 git,实际上对应的路径是 which git, 这些都是系统依赖;包括 cd 这样的命令也都是。

    • Hepochen reply

      @Ling Sun, 你这个只是 git 的同步,可以参考 https://we.markeditor.com/post/how-to-use-the-custom-cloud#main

      这里的命令, ME 内是有特殊的自动补全的。但是除此之外的,必须自己不要有任何系统环境的依赖。

  • Ling Sun reply

    1. 同步到:

    /bin/sh /Users/sunling/MyRepos/Readings/push.sh

    2. 同步自:

    /bin/sh /Users/sunling/MyRepos/Readings/pull.sh

    3. 我的push.sh脚步:

    /usr/bin/cd /Users/sunling/MyRepos/Readings

    /usr/local/bin/git add -A

    /usr/local/bin/git commit -am "update"

    /usr/local/bin/git push origin master

    4. 我的pull.sh脚本:

    /usr/bin/cd /Users/sunling/MyRepos/Readings

    /usr/local/bin/git pull origin master

    这样还是不行呢!:(

    • Hepochen reply

      @Ling Sun, 我的意思是命令改为

      cd /Users/sunling/MyRepos/Readings && /bin/sh /Users/sunling/MyRepos/Readings/push.sh

      或者使用类似 Python 的脚本,在脚本里控制上下文目录,cd 未必有用。

      或者参考我上面回复给出的一个例子,那个例子是针对 git 的。 :)

      • Hepochen reply

        cd $root$ && /bin/sh $root$/push.sh

        https://we.markeditor.com/post/how-to-use-the-custom-cloud#main

  • Ling Sun reply

    cd /Users/sunling/MyRepos/Readings && /bin/sh /Users/sunling/MyRepos/Readings/push.sh

    cd /Users/sunling/MyRepos/Readings && /bin/sh /Users/sunling/MyRepos/Readings/pull.sh

    还是不行呢!:(

    • Hepochen reply

      @Ling Sun, 你好呀,抱歉,恐怕帮不上忙了。

      我做了下面的尝试,工作正常。

      1,新建的一个全新的目录,git init

      2,新建 push.sh,内容为

      /usr/bin/git add -A

      /usr/bin/git commit -am "update"

      3,在 ME 内 『同步到』 的命令调用为: cd $root$ && sh $root$/push.sh

      然后,工作正常。

      通过自定义的逻辑产生了脚本的调用,比如这里的实例是对 push.sh 的调用,而且没有产生错误日志,换句话说,就是操作系统内对这个脚本调用本身是没有报错的,它已经正确得被执行了。至于执行的效果,已经不是这个 『调用』能控制的了。

      再找找原因? 或者不要通过 .sh 的中转,直接命令调用也是可以呀,参考前文提供的 demo 的链接就可以了,而且这个时候,如果出错,系统还能捕获到可能的错误信息。

  • Ling Sun reply

    我也放弃了,我建立了新目录测试,用了下面的命令还是不行,我记得之前我同步成功过,为什么突然不行啦!难道我需要重新卸载安装看看吗?

    /usr/bin/cd $root$ && /usr/local/bin/git add -A && /usr/local/bin/git commit -am "update" && /usr/local/bin/git push origin master