Open m-tmatma opened 5 years ago
少し調べてみました。
sakuraリポジトリの最古のコミット https://github.com/sakura-editor/sakura/commits/c1357c0cf2b5dcee5458d2e48f2b0b3130643db9 と master を比較する API を叩いて、No common ancestor
と言われていますね。
該当する修正を探したところ、https://github.com/github-changelog-generator/github-changelog-generator/commit/372875f74838e5d7ab38bc337ec4333b540c13cd でした。
内容を深くは見ていませんが、取り急ぎ、
$ git checkout 372875f7
でエラーが発生し、
$ git checkout 372875f7~
では発生しないことを確認できました。
主なコマンド:
$ git clone git@github.com:github-changelog-generator/github-changelog-generator.git
$ cd github-changelog-generator
$ git checkout 372875f7~
※pp で止まるのでとりあえずコメントアウト
$ vim lib/github_changelog_generator/options.rb
$ git diff lib/github_changelog_generator/options.rb
diff --git a/lib/github_changelog_generator/options.rb b/lib/github_changelog_generator/options.rb
index 0578cbd..69a5a45 100644
--- a/lib/github_changelog_generator/options.rb
+++ b/lib/github_changelog_generator/options.rb
@@ -104,7 +104,7 @@ module GitHubChangelogGenerator
def print_options
return unless self[:verbose]
Helper.log.info "Using these options:"
- pp(censored_values)
+# pp(censored_values)
puts ""
end
$ gem build github_changelog_generator && gem install github_changelog_generator-1.15.0.pre.rc.gem
>github_changelog_generator -u sakura-editor -p sakura
---> OK
$ git checkout 372875f7
$ gem build github_changelog_generator && gem install github_changelog_generator-1.15.0.pre.rc.gem
>github_changelog_generator -u sakura-editor -p sakura
---> NG
sakuraリポジトリのどこからが common ancestor
なのか探しました。
git の中身はあまり詳しくないんですが、cvs -> svn -> git と移行してきたリポジトリの cvs -> svn 部分で git の tree が壊れてる的なことでしょうか。
d6ffc6d489ee0a7c4683d8f34d8c668915919263 は c1357c0cf2b5dcee5458d2e48f2b0b3130643db9 から始まっており、これは sakura-editor/sakura#60 で統合された installer のブランチですね。もともと別リポジトリだったので、共通先祖がなくて正しいです。
Ruby 2.4 でも発生するのでタイトルを変えました。
https://github.com/github-changelog-generator/github-changelog-generator/issues/695 でとりあえず現象発生の情報だけ投げときました。
バグ報告したけど、他のチケットも放置されてるみたい。何ヶ月も前のチケットが、何のコメントもなくそのままになっていたりする。
数ヶ月前に試していたものを放置していたのでメモだけ。
とりあえず下記のようにすると oldest_commit
が任意のものになるのでエラーは発生しなくなる。
# lib/github_changelog_generator/octo_fetcher.rb
def oldest_commit
target_sha = '756ed7f5d6449d49df59c19d94820fc4f6b7748b'
commits.each do |c|
return c if c["sha"] == target_sha
end
commits.last
end
oldest_commit
を任意に設定できるようにすると、全コミットを取得する必要もなくなるので本事象以外にもメリットはあるので、そんな感じのオプションを追加するPRでも送ろうと思っていますがいつになるやら。
↑ に書きましたが、
https://ci.appveyor.com/project/sakuraeditor/changelog-sakura/builds/32427669
以下のエラーになりました。
C:/Ruby25-x64/bin/github_changelog_generator: stack level too deep (SystemStackError)
stack level too deep (SystemStackError)
についてですが、https://github.com/github-changelog-generator/github-changelog-generator/blob/9825c5e9778abd9026c156bd46e1053960df47c2/lib/github_changelog_generator/octo_fetcher.rb#L353 にある commits_in_tag
というメソッドの再帰が深すぎて発生していることがわかりました。
再帰をループに変更してやろうかと思っていますが、ひとまず
return if shas.count > 500
のような条件で抜けるようにして強引に動かし、https://github.com/sakura-editor/sakura/pull/1232 の調査を進めています。
https://github.com/github-changelog-generator/github-changelog-generator/issues/695 に対しては元の問題は発生しなくなったのでいったんクローズして、別のIssueとして上げてあげたほうがいいかもしれません。
github-changelog-generator/github-changelog-generator#695 に対しては元の問題は発生しなくなったのでいったんクローズして、別のIssueとして上げてあげたほうがいいかもしれません。
issue の登録お願いできますか?
issue の登録お願いできますか?
https://github.com/github-changelog-generator/github-changelog-generator/issues/829 を登録しておきました。
そして、since-commit
オプションを追加して、取得するコミット数を減らすことで回避できたので https://github.com/github-changelog-generator/github-changelog-generator/issues/830 を投げておきました。
先ほど試した感じだとこれくらいでした。取得する commit 数も減るんで多少速くなったはず。
コミットを重ねていくとまた発生するかもしれませんがそのときはいよいよ再帰をループに変更するしかないのかな。
Ruby 2.5/Ruby 2.4 + github_changelog_generator の master で Octokit::NotFound のエラーになる
2020/5/4 追記
最新版では
https://ci.appveyor.com/project/sakuraeditor/changelog-sakura/builds/32427669
以下のエラーになります。
C:/Ruby25-x64/bin/github_changelog_generator: stack level too deep (SystemStackError)
オリジナルの問題
https://github.com/sakura-editor/changelog-sakura/issues/15#issuecomment-447329958