emacs-china / EGO

EGO is a static site generator that depends on Emacs, Git and Org-mode.
94 stars 11 forks source link

Get first commit before publish #102

Closed lujun9972 closed 6 years ago

lujun9972 commented 6 years ago

@kuangdash 可以自动查出发布前的那个提交版本,是不是就可以不用base-git-commit这个参数了?

lujun9972 commented 6 years ago

另外,发布函数里的test-dir和store-dir这两个变量有什么不同啊? 我感觉这个test-dir完全莫名其妙的

lujun9972 commented 6 years ago
     (store-dir (if (not base-git-commit)
                    test-dir
                  "~/.ego-tmp/")) ; TODO customization

这段代码到底是想干嘛?

lujun9972 commented 6 years ago

ego--get-first-commit-after-publish没什么用,主要是ego--get-first-commit-before-publish这个函数

这个pr的目的是自动计算base-commit啊,你不觉得比单纯的~HEAD要合理的多吗?

lujun9972 commented 6 years ago

我个人觉得用这个函数就完全没有必要手输base-commit了

lujun9972 commented 6 years ago

我不明白为什么store-dir的值会根据base-git-commit的不同而不同?

kuangdash commented 6 years ago

@lujun9972 base-git-commit 不为空就意味着 partial publication,这时候需要用 .ego-tmp 的临时目录,如果为空就意味着 full publication,直接用 test-dir 把内容全部移入就行了。(这里代码写的有点绕,确实不该用 base-git-commit 作为判断 partial 还是 full 的标志位)

这里怎么自动计算 base-commit 的?我以为至少要存个标记在 .git 里面的,不然和 ~HEAD 有何区别?

lujun9972 commented 6 years ago

根据base-git-commit来判断partial还是full不合理啊...不是根据我的选择来判断吗...

找到base-commit的原理很简单,就是先找出html branch publish提交的最新时间,然后早于这个时间的最新的org branch的commit就是了,你看代码就能看出来

kuangdash commented 6 years ago

base-git-commit 就是是根据 interactive 的交互参数 f 设置的。

自动计算 base-commit 的方法,你不说我还真没看懂- -。不过没有 html branch publish 时间的时候(初始化时)怎么办?会不会 bug?

lujun9972 commented 6 years ago

初始化的时候,用~HEAD没问题吗?

lujun9972 commented 6 years ago

不行就加个判断,如果html-branch不存在的话就完全发布,若html branch存在则必然有做过commit

kuangdash commented 6 years ago

这种方法对 org branch 和 html branch 为同一个 branch 的情形是失效的…所以正规的方式还是在 .git 里存储标志位

推给 EGO 2.0

lujun9972 commented 6 years ago

如果是这种情况,就算是存在commit里,你也找不到是存在哪个commit中的。 这种情况就应该在检验配置文件的时候检查出来让他们改