mob icon indicating copy to clipboard operation
mob copied to clipboard

one ensemble, multiple codebases

Open schmonz opened this issue 2 years ago • 8 comments

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?

schmonz avatar Jan 30 '23 15:01 schmonz

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?

hollesse avatar Jan 30 '23 15:01 hollesse

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.

schmonz avatar Jan 30 '23 21:01 schmonz

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.

gregorriegler avatar Jan 31 '23 00:01 gregorriegler

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

simonharrer avatar Jan 31 '23 08:01 simonharrer

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.

schmonz avatar Feb 02 '23 15:02 schmonz

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.

NVolcz avatar Sep 27 '23 13:09 NVolcz

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

gregorriegler avatar Jun 24 '24 19:06 gregorriegler

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.

NVolcz avatar Jun 26 '24 07:06 NVolcz