Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

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

Open
sktometometo opened this issue Jun 21, 2023 · 7 comments
Open

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

sktometometo opened this issue Jun 21, 2023 · 7 comments

Comments

@sktometometo
Copy link
Contributor

sktometometo commented Jun 21, 2023

develop/fetch 環境についての説明
( #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 を出した場合は [WIP] Merge develop/fetch branch #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
Copy link
Contributor Author

@k-okada @mqcmd196 @tkmtnt7000 @nakane11

@sktometometo sktometometo pinned this issue Jun 21, 2023
@mqcmd196
Copy link
Member

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

@sktometometo
Copy link
Contributor Author

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

@mqcmd196
Copy link
Member

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

@sktometometo
Copy link
Contributor Author

sktometometo commented Jun 21, 2023

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

@sktometometo
Copy link
Contributor Author

update_workspace.sh の仕様と毎日どういう機能を回すかはちょっと話変わるから #1808 かあたらしい issue で話そう

@mqcmd196
Copy link
Member

すいません,

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

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

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

# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

2 participants