jsk-ros-pkg / jsk_robot

jsk-ros-pkg/jsk_robot
https://github.com/jsk-ros-pkg/jsk_robot
73 stars 97 forks source link

develop/fetch での実験・開発について #1821

Open sktometometo opened 1 year ago

sktometometo commented 1 year ago

develop/fetch 環境についての説明 ( https://github.com/jsk-ros-pkg/jsk_robot/pull/1593 のブランチを基準としたワークスペースやロボット構成 )

Fetch は master にマージされていない機能や修正を常時有効化して動作させるために、 master とは別に develop/fetch ブランチからなる develop 環境が存在し、Fetch実機の体内環境はこのブランチをベースに構成されています。

How to contribute to develop/fetch branch

  1. 必ずPull Requestを通じて変更する。
  2. Pull Requestは基本的に少なくとも一人以上のレビューを必要とする。レビューしないでマージする場合はPull Requestに理由を記載する。(e.g. 実験のため等)
  3. Merge は Rebase (or Squash) で行う。
  4. Merge はPRを出した人がする。
  5. master にマージするべき機能はmasterにもPull Requestを出す。
  6. master にも Pull Request を出した場合は https://github.com/jsk-ros-pkg/jsk_robot/pull/1593 の関連PRリストに追加する。
  7. develop/fetch を master にリベースする際は Fetch chat スペースで周知してから行う。実験等で develop/fetch がリベースすると困る場合は見送る。

How to develop internal environment in Fetch

2つの方法がある

  1. 自分のワークスペースを作る
  2. fetchユーザーのmelodicワークスペースを変更する

1. 自分のワークスペースを作る

基本的にはこの方法をとり、こちらでは実験できないことを行う際には2番の方法を取る。

catkin workspace の extends 機能を使って、 fetchユーザー以下にあるmelodicワークスペースを継承するワークスペースを作って使用するのがおすすめ. (cf. https://catkin-tools.readthedocs.io/en/latest/verbs/catkin_config.html#explicitly-specifying-workspace-chaining)

cd ~
mkdir -p catkin_ws/src
source /home/fetch/ros/melodic/devel/setup.bash
cd catkin_ws
catkin init

これで, fetch ユーザー以下の ros/melodic ワークスペースを継承するワークスペースを作成できた。 catkin config すると Extending のフィールドが以下のようになっているのが確認できるはず。

Extending:             [env] /home/fetch/ros/melodic/devel:/opt/ros/melodic

2. /home/fetch/ros/melodic ワークスペースを使う

自動起動するワークスペースを変更して開発を行う場合はこちらの方法。 Fetchのデフォルトの挙動へ影響を及ぼすのでこちらの方法を取る場合は注意

基本的にローカルのブランチへ直に作業せず、自分の作業ブランチをきってから作業すること。

注意点:

cron で update_workspace.sh をこのワークスペースに対して毎日動作させているため、remote へ push しないで開発していると local の変更はリセットされたり削除される可能性があるので注意。

sktometometo commented 1 year ago

@k-okada @mqcmd196 @tkmtnt7000 @nakane11

mqcmd196 commented 1 year ago

あらかた同意です.で,今 /home/fetch/ros/melodic/src 以下にブランチ切ってコミットすると git branch -D されてgit reset --hardされるようで,その仕様までは知りませんでした.なのでこれは普通に git checkout develop/fetch にするだけに変更したらいいと思います.

sktometometo commented 1 year ago

これはもともと develop/fetch が diverged した際に remote の develop/fetch を確実にcheckoutするための仕様なのだけど、diverged したときのみ branch -D して checkout したい

mqcmd196 commented 1 year ago

diverged したときに branch -D する理由って何でしょうか?そのまま git checkout develop/fetch したらいいだけだと思いますが

sktometometo commented 1 year ago

local に diverge 前の develop/fetch あったらリモートの develop/fetch checkout 出来ないよね

sktometometo commented 1 year ago

update_workspace.sh の仕様と毎日どういう機能を回すかはちょっと話変わるから https://github.com/jsk-ros-pkg/jsk_robot/pull/1808 かあたらしい issue で話そう

mqcmd196 commented 1 year ago

すいません,

local に diverge 前の develop/fetch あったらリモートの develop/fetch checkout 出来ないよね

は正しくて,言いたかったことは,今起きている状況として

  1. /home/fetch/ros/melodic/src で自分でなにかブランチを切って作業してコミットする
  2. するとcronで自分が作ったブランチがすべて消去され,resetされてしまう という状況が起きていて,別にブランチは残ったままで,ただ git checkout develop/fetch したらいいだけじゃないか,ということでした.間違えて develop/fetch にコミットしてしまった,というものについてはstashしたらいいんじゃないかと思います