-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[jsk_robot_startup][jsk_fetch_startup] Add dry run option of update_workspace.sh #1808
[jsk_robot_startup][jsk_fetch_startup] Add dry run option of update_workspace.sh #1808
Conversation
I'm sorry, I overlooked your fetch's PRs for some github notification fault... |
if [ -n "$WSTOOL_STATUS" ]; then | ||
echo -e "Please commit robot internal change and send pull request.\n" >> $TMP_MAIL_BODY_FILE | ||
echo -e $WSTOOL_STATUS >> $TMP_MAIL_BODY_FILE | ||
wstool diff -t $WORKSPACE/src # rostopic pub fail when wstool diff has single quote or double quotes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
このwstool diffをメール本文に追加できると良いが,diffの中身に含まれているシングルクオートやダブルクオートが後のrostopic pubする部分で悪さをしてうまくいかない
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sedでエスケープシーケンスつけたりして回避できないかな
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ありがとうございます。試してみます。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
8a73f09 でできるようになった気がしています.
I agree with adding options for dryrun, but I don't agree with making dryrun default.
If you want to do this, I think the correct way is sending app's PR to |
Yes, so far I have agreed with that view, but the problem might be that the workspace is cleaned up to default branch without any notice for first-time users. If there are any changes left in the robot's body, it would be more helpful to notify the user by leaving the changes in robots' workspace instead of deleting them. 毎回手動でワークスペースを更新させるこのPRは更新忘れなどを誘発するのでやりすぎな気もしますが,体内diffが残っていたらその旨を通知してdiffを残しておくくらいにしても良いかもしれないと思ってのPRでした. 610と73B2のFetch, PR2ユーザーあたりが関係していそうなのですこし意見を伺いたい気持ちもあります.(すでにPR1012はworkspace updateを停止しているらしいので) FYI:自分も耳が痛い話ではありますが最近githubが活発でない(結果として他人の研究内容・実装領域がわかりづらい)ことの弊害もあるのではないかとの意見も少しもらったので |
は多分それぞれ別の話で、1. はそのときcron書き換えて無効化するなり-nオプションつけるなりしたらいいかなと思うし、3は普通にやったら良さそう |
個人的にはgit dirtyな状態をfetchユーザのworkspaceでは放置してほしくないです.そのあとに使う人が,いつもと違う挙動だった時にcommitで何が違うのかを遡れない,dirtyな状態にした人の変更をわざわざ見ないといけない,dirtyな状態にした人に連絡を取ってどうすればいいか聞かないといけない,というのを毎回やるのは結構つらいです. 基本は自分のユーザ作ってfetch:/home/fetch/melodic/を上流とするworkspaceを作る,それで難しい開発はfetchユーザで試して,自分の実験が終わったらそれをコミットして必要に応じてPRに出す,でいいと思っています.で
これは完全に申し訳なくて,このリポジトリがwatchされていると勘違いして,イベントが何も見れていませんでした.気を付けます. ちなみに |
610のPR2でworkspace updateを停止した理由としては、diffとは別にbuildに失敗して後から手動でやり直す必要があると、翌朝デモなどですぐに使いたいときに困るというのと、サーボ落ち問題などのデバッグのための一時的な変更が消されてしまうというのがあります pr1012のユーザが少ないからできるのかもしれませんが、修理用のdiffが共有されている状態だと、ブランチを切るだけでなくリモートにpushする必要があるのは少し手間でした |
これはどうして失敗するのですか?
なるほど,これはcronを一時的に切るという理由にはなりそうです. |
buildの順序の問題みたいです(cmakeを直せば解決する) |
パッと見た感じだとjsk_rviz_pluginsのビルドに失敗している |
途中まで書いてて放置してごめん、デフォルトの挙動をどうするかの話は、nightly build + 常時動かす実験としてのキッチンデモのあるFetchとないPR2で違う事情があると思っています。 PR2は常時ロボットを動かす実験というものが無い(Tweetとかはあるけど)しnightly buildも無いので、毎日環境をリセットする必然性は薄いかなと思います。ただ、新入生がつかおうとして安定して動作させられる環境(ラップトップ側だけでプログラムを書いて実験出来る環境)はメンテナンスした方がいいと思うので、各々のブランチとは別に共通して安定して動作する環境は合ったほうがいいと思う。PR2のdevelop環境はこの立ち位置が結構強いかなって思ってます。 そうなると今の update_workspace.sh を動作させるのはたまに安定版であるdevelop環境がきちんと動作することを確認するために使うという意味くらいになりそうだから、cron切っておくのはいいんじゃないかな。 もしPR2で毎日update_workspace.sh的なものを動作させるとしたら、体内環境をdevelop環境へリセットするというより、develop環境とは違う状態であることをnotifyするくらいでいいかもですが、これは使う人たちが今こういう状態ですってコミュニケーションしていれば十分な気もする。あとupdate_workspace.shにその機能はないです。 Fetchのupdate_workspace.shはもともとキッチンデモをdevelop環境のnightly buildとして動作させる意味合いで今の形にしましたが、今キッチンデモはdevelop/fetch環境のnightly buildとしての用途と、常時行われる実験としての用途の二種類あると思っていてこっちもちょっと分けたほうがいい話だなと思っています。 常時行われる実験という意味合いは上の基盤の上に乗っかっている形になると思うんだけど、キッチンデモを安定動作する実験であることを前提にしていると思います。ただこれはdevelop環境を不安定にする実験とか開発とちょっと相性が悪くて、不安定期間が長くなると実験できなくなるんだよね。それでmasterに送れないようなPRをdevelop環境に送るなって話が出てた。 こういう事情で、develop環境にすぐにマージするという話はdevelop環境を共通安定版として使うという話とある程度干渉する話だと思ってて、今のFetchの使い方だとこういう話起きるかなと思ってます。順当に解決するには不安定版(develop)と安定版(stable)両方を用意してそれぞれでテストを走らせて、安定版に乗っかった実験をする人は安定版に乗っかって実験するとかになると思うんだけど、2つの環境を自動で切り替えるような仕組みをまた作る必要があるし、ブランチ管理がさらに大変になるし.... |
609ad33
to
a66ea9c
Compare
f5ae8c6
to
3470417
Compare
3470417
to
4c6fa64
Compare
皆様ありがとうございます. 色々とお話を聞いている中で思い出しましたが,
実験で使ったデモンストレーションは基本的にロボットのデフォルト挙動をcriticalに変更するものは少ないはずなので,jsk_demosすぐにPRとして出してどんどんマージしていくと,ロボットのデモがリッチになって良いと思います.他の研究室メンバーが何をしようとしているのかを知ることでその他の人の研究が進む種になるのではないか,というところが今回このPRが出ることになった理由の一つでもあります.
個人的な意見ではありますが,現在のワークスペース構成でロボット体内でビルドが通ることを確認しておくことに意義はありそうな気がしてます.毎日する必要はないので頻度に関しては柔軟に対応して良いと思います. |
結局どうなったのかな。
という目的があるとして
常時デモが動くのは良いことなんだけど、一方でデモは毎回進化していってほしいという事があります。ここがむつかしい。 他の案で思いつくのは、
ですが、現状でreset --hard がやりすぎなだけかと思ったのですが、意図はgit dirtyな状態を許容するのではなく
でよいのでは?と思ったんだけど3)は発動されずに、結局diffが残り続けるのかな。あるいはreset hard した時にプログラムが動くことが保証されていない?大体OKだけど、hardして戻ったときのcommitだと、その時点の古い外部依存ライブラリでしかコンパイルしていないから、その途中で外部依存ライブラリがupdate されたらコンパイル通らない、というケースがあるかな。 |
@tkmtnt7000 Nice feature. thanks! |
ありがとうございます。一旦マージします |
This PR added dry run option of update_workspace.sh.
Now fetch and pr2 workspaces forcefully update at 3:00, but this function forcibly erases changes in the robot body, which was troublesome when, for example, we wanted to prepare a demonstration the day before a tour.
This PR avoids that situation.
豊島岡の見学会準備のフィードバックを受けての変更です.
毎朝3時にロボット体内の変更をすべて消し去るのはよくないのではないか,というところを反映しています.
今回の変更を適用するとFetchのwstool updateは手動で行うのがデフォルトになります.