Skip to content
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

one ensemble, multiple codebases #361

Open
schmonz opened this issue Jan 30, 2023 · 8 comments
Open

one ensemble, multiple codebases #361

schmonz opened this issue Jan 30, 2023 · 8 comments

Comments

@schmonz
Copy link
Contributor

schmonz commented Jan 30, 2023

mob handles a temporary branch in a particular repo. That suffices when all the code being worked on is in that repo. What about when it’s not? Say, for a simple case, when we’re making coordinated changes to a REST endpoint and its consumer. How do?

For everyone to pass around every potentially involved repo on every handoff without effort, my best idea so far is to use myrepos with this .mrconfig:

[DEFAULT]
git_mob = mob "$@"

Then we can say mr mob start 10 or mr mob next and it'll run on all repos in rapid succession. When done, mr mob done followed by mr status to see which repos actually need us to compose a commit message.

This solution depends on an external Unix-specific tool. Could mob be enhanced to optionally operate on multiple repos?

@hollesse
Copy link
Member

Is that really needed? In my project we have around 50 different repositories. We sometimes need to change code on multiple services, but we always work an one service first and then go to the other service. Does that differ from your approach?

@schmonz
Copy link
Contributor Author

schmonz commented Jan 30, 2023

Perhaps (very possibly) I'm overthinking. The bigger problem I'm holding in mind is a combination of this one and #360, wanting to avoid handoff friction and/or loss of work when multiple simultaneous sessions are operating in multiple repos. Also I want very much to avoid having to remember correctly which repos we may have touched along the way, but rather shoveling along all our WIP (wherever it may be) on each rotation.

@gregorriegler
Copy link
Collaborator

gregorriegler commented Jan 31, 2023

when we’re making coordinated changes to a REST endpoint and its consumer. How do?

Consumer Driven Contracts and Parallel Change come to mind. That keeps em independently deployable. Or if you don't want that you could join those repos. Crossrepo handling is not trivial. mob is very simple and doesn't have any session state. It relies entirely on what git knows.

@simonharrer
Copy link
Member

We were thinking of allowing hooks at specific points during the mob commands. With the hooks in place, you could build something like this.

@schmonz
Copy link
Contributor Author

schmonz commented Feb 2, 2023

Consumer Driven Contracts and Parallel Change come to mind

Yes, those are good options for the particular example two-repo scenario I gave. In principle they're always good options to have or to work towards :-)

mob is very simple and doesn't have any session state. It relies entirely on what git knows.

I don't want this to change, and my intuition says it wouldn't have to.

@NVolcz
Copy link

NVolcz commented Sep 27, 2023

I am interested in having this future. Right now I default to only use timer.mob.sh or similar service when working across multiple repos.

mob is very simple and doesn't have any session state. It relies entirely on what git knows.

How does mob store timer state today? Doesn't seem to be stored in git.

@gregorriegler
Copy link
Collaborator

I am interested in having this future. Right now I default to only use timer.mob.sh or similar service when working across multiple repos.

mob is very simple and doesn't have any session state. It relies entirely on what git knows.

How does mob store timer state today? Doesn't seem to be stored in git.

You mean this: https://timer.mob.sh/ ?
It sends requests to the server. See the code here: https://github.com/remotemobprogramming/mob/blob/main/timer.go

@NVolcz
Copy link

NVolcz commented Jun 26, 2024

Thanks for the link to the code. I through the timer state were stored somewhere on the file system but it seems to be only stored on the web and handled as a background process.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants