2019年6月27日木曜日

Cygwin インストール後に SourceTree で「SSH 認証に失敗」ダイアログが出て接続に失敗してたので対応した備忘録

SSH認証に失敗

OpenSSH は起動していますが、接続に失敗しました。メニューのツール > SSH キーの追加 から、適切なキーを追加する必要があります。

OpenSSH では手動でユーザー名とパスワードによってログインすることはできませんのでご注意ください。その場合、HTTPS 形式の URL を使うか、SSH クライアントを PuTTY/Plink に切り替えてください。これはメニューの ツール > オプション から設定できます。


最近、Windows PC を新調したので、セットアップしていてこんな感じのダイアログが大量に出てきて、ビックリしました。
原因は cygwin をインストールしてパスを通したタイミングで cygwin の ssh agent を見るようになったのと、cygwin の HOME から設定した ssh のキーが見えていなかったためでした。


というわけで、HOME 環境変数を %USERPROFILE% として設定して対応しました。
HOME を Windows の環境変数に設定するのは非推奨というのを見かけますが、今までだいたい HOME を設定してたんですよね。
これなんでなんでしょうね?(疑問で終わる・・・)

ダイアログが大量に出てビックリして、検索したけど、ドンピシャなページにヒットしなかったので備忘録として残しておきます。
今回は以上です。では。



2019年6月19日水曜日

git config コマンドで [mergetool "sourcetree"] のようなセクションを設定する

[mergetool "sourcetree"]
 cmd = 'C:/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe'  -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
 trustExitCode = true

こういうような、セクションにタグ?がついてるような config をコマンドから設定したいなと思いつつも、
いつもファイルを直接編集していました。


それでもなんとかなってたのですが…
自分も dotfiles を git 管理するようにして、いつでもどこでも簡単セットアップ!…
にしてたときに問題になったので、ちゃんと調べました。





まぁ、調べたらすぐ出てくるもんです。
Git on Windows: How do you set up a mergetool? - Stack Overflow

最初の mergetool sourcetree の場合は、こうなります。
git config --global mergetool.sourcetree.cmd 'C:/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe' -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED

[XXX YYY] ZZZ とあったら、XXX.YYY.ZZZ のように単純に . で繋げばいいだけでした。
めでたしめでたし。

2019年6月10日月曜日

[備忘録][Gem] github master の最新のパッケージをインストールする

はじめに
あるタイミングから Travis CI から Coveralls にカバレッジレポートを送る処理が失敗してることに気づきました。
https://github.com/srz-zumix/iutest/issues/234

Coveralls へのレポート送信は lcoveralls を使っていて、全く同じ issue がすでに修正されマージされていました。
ただ、まだ gem にはこの修正を含んだパッケージはアップされてなかったため、github の master からパッケージインストールすることにしました。

方法
specific_install を使うだけ!
参考にしたところ:gem installでGitHubリポジトリにある最新版をインストールする - Qiita

gem install specific_install && gem specific_install -l 'git://github.com/pcolby/lcoveralls.git'

2019年6月3日月曜日

lcov で "geninfo: ERROR: ***.gcno: reached unexpected end of file" が出たときにやったこと

Coveralls へのカバレッジレポートアップロードを Travis CI でやっていて、
今までは gcc + gcov でやっていたのだが、Codecov の方が clang から gcc に変更になったので、Coveralls は clang に。
と、思ったらぶつかったのでメモ。
https://github.com/srz-zumix/iutest/issues/234



まず、clang が生成する gcno のフォーマットが gcc 4.2 で、Travis CI の xenial 環境に入ってる gcc が 5.5 だったため clang + gcov でもエラーが出て集計できなかった、というのが根本的な原因と思われます。
gcov -r *.gcda;
also_run_disabled_tests.gcno:version '402*', prefer '505*'
Segmentation fault (core dumped)

この状態で lcov を使うと、表題のエラーになっていました。
geninfo: ERROR: /home/travis/build/srz-zumix/iutest/test/assertion_return_tests.gcno: reached unexpected end of file
lcov は gcov をバックエンドとして使っているので、おそらく内部的に gcov のエラーが置きているのではないかと予想。(ホントのところは知らんけど)

解決方法
Check Code Coverage with Clang and LCOV | Logan's Note

↑の記事にあるように、llvm-gcov.sh ファイルを作成する。中身は以下の通り


あとは、lcov のオプションに --gcov-tool path/to/dir/llvm-gcov.sh とするだけです。

iutest で実際にやってますので、そちらも参考にしてみてください。
ではでは。