Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Mr SuperAwesome posted:

does anyone have any good tools for managing multiple git repos?

at job i work with like 8 repos, and have to make changes in 3 - 8 depending on what a ticket touches. this obviously makes checking out branches, committing and merging quite annoying

i want a thing that lets me
- pull all repos
- check out ticket branch for a repo if exists else use master
- merge branch A into my branch for all repos

cos i sure am mad about having to do 1000 commands just to work on poo poo like a chump

for r in `ls`; do cd $r; git pull; cd ..; done

Adbot
ADBOT LOVES YOU

gonadic io
Feb 16, 2011

>>=

Mr SuperAwesome posted:

does anyone have any good tools for managing multiple git repos?

at job i work with like 8 repos, and have to make changes in 3 - 8 depending on what a ticket touches. this obviously makes checking out branches, committing and merging quite annoying

i want a thing that lets me
- pull all repos
- check out ticket branch for a repo if exists else use master
- merge branch A into my branch for all repos

cos i sure am mad about having to do 1000 commands just to work on poo poo like a chump

just do a bash script

cinci zoo sniper
Mar 15, 2013




rstudio is such garbage

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord

Mr SuperAwesome posted:

does anyone have any good tools for managing multiple git repos?

at job i work with like 8 repos, and have to make changes in 3 - 8 depending on what a ticket touches. this obviously makes checking out branches, committing and merging quite annoying

i want a thing that lets me
- pull all repos
- check out ticket branch for a repo if exists else use master
- merge branch A into my branch for all repos

cos i sure am mad about having to do 1000 commands just to work on poo poo like a chump

joke option: make a new git repository with all the other git repositories inside it as submodules

Mr SuperAwesome
Apr 6, 2011

im from the bad post police, and i'm afraid i have bad news
lol we actually tried that and it (unsurprisingly) made things worse because we grouped stuff in a dumb way (web poo poo, async poo poo) and it sucked

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man
we had a similar situation at my last job and honestly we just solved it by having a top level "toolchain" repo where overall build scripts lived (we were making an embedded Linux image and a cross platform desktop application though so actual cohesive single outputs, not a bunch of websites). the toolchain repo had a file that listed all the sub repos and we had fairly simple Python tooling that would parse it and could check out or clone or branch everything. and if you had a ticket that hit multiple repos you could create a branch of the toolchain that changed the branches listed as files.

so kinda like a bunch of subrepos but easier to keep them all up to date. it had its downsides for sure but I think having some sort of spec file with tooling that reads it is the only way

cinci zoo sniper
Mar 15, 2013




why on earth you can't mutate in r pipes

tef
May 30, 2004

-> some l-system crap ->

Mr SuperAwesome posted:

i want a thing that lets me
- pull all repos
- check out ticket branch for a repo if exists else use master
- merge branch A into my branch for all repos

it's called a monorepo

tef
May 30, 2004

-> some l-system crap ->
https://redfin.engineering/well-never-know-whether-monorepos-are-better-2c08ab9324c0

like someone went out and changed a team and came to exactly zero conclusions

because they assume the cost of a monorepo/multirepo is uniform across the team

if you're working on a single component, like mutlirepos is like a monorepo, but not having to deal with other people as much, and you don't have to spend your time rebasing things like a chump

on the other hand if you're making lots of cross cutting changes, or doing deployment or operations, a monorepo is far far easier to handle as you keep a global snapshot around

but mostly the git monorepo / microrepo debate boils down to what you hate more: git's lack of subtree checkouts or git submodules

tef
May 30, 2004

-> some l-system crap ->
flat multirepos: this is great

multirepos that have subtle dependency chains: oh god kill me already

Workaday Wizard
Oct 23, 2009

by Pragmatica
isn't that what branches are for?

Mr SuperAwesome
Apr 6, 2011

im from the bad post police, and i'm afraid i have bad news

tef posted:

flat multirepos: this is great

multirepos that have subtle dependency chains: oh god kill me already

yes we have this lol

shared library code and database stuff at the bottom, various components built on different bits of the chain going up

Cocoa Crispies posted:

for r in `ls`; do cd $r; git pull; cd ..; done

this works alright, ty

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Mr SuperAwesome posted:

yes we have this lol

shared library code and database stuff at the bottom, various components built on different bits of the chain going up


this works alright, ty

some shells have pushd and popd but the last shell script i wrote didn't work wtih them

Mao Zedong Thot
Oct 16, 2008


monorepo > microrepos generally speaking

unless you are solving an actual problem by splitting things up, you're trading no problems for a bunch of problems

Sapozhnik
Jan 2, 2005

Nap Ghost
facebook apparently uses a gigantic mercurial monorepo and that sort of works for them i guess

idk why people have such a difficult time with git submodules though. i mean, yes, you need to actually think while using them, they're not magic, but the concept itself seems pretty straightforward?

then again, i could say that about git itself. git has a fuckawful cli and i will never defend the insanity that is git-reset, but the underlying concepts are neat and simple enough.

darthbob88
Oct 13, 2011

YOSPOS

Sapozhnik posted:

facebook apparently uses a gigantic mercurial monorepo and that sort of works for them i guess

So does Google
, although admittedly it only really works because they're Google, the world-bestriding megacorp, and willing to write their own massive infrastructure to make it work.

The_Franz
Aug 8, 2003

darthbob88 posted:


So does Google
, although admittedly it only really works because they're Google, the world-bestriding megacorp, and willing to write their own massive infrastructure to make it work.

i thought they had a giant perforce repo at one point?

Jabor
Jul 16, 2010

#1 Loser at SpaceChem

The_Franz posted:

i thought they had a giant perforce repo at one point?

yup, it's even mentioned in the article. the whole custom-monorepo thing is essentially because it got too large for perforce.

if you're not a globe-spanning megacorp you can probably run a monorepo just fine on existing commercial software. i'd even venture that investing money into making that happen is probably more cost-effective than trying to make any sort of fine-grained split repo work.

Sapozhnik
Jan 2, 2005

Nap Ghost
microsoft uses a derivative of git for windows development lol

FamDav
Mar 29, 2008

tef posted:

flat multirepos: this is great

multirepos that have subtle dependency chains: oh god kill me already

monorepos that have no clear dependency hierarchy: kill everyone then kill me we do not deserve to see gods light

MononcQc
May 29, 2007

comedy option: company committed to open-sourcing components except business-critical ones but also operating with a monorepo

Cybernetic Vermin
Apr 18, 2005

monorepos are the way to do it. and if you have artifact version management as something non-static during development you've done hosed up

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

i can tell you at least one of the major java ee servers is one monorepo in git

another is an even larger monorepo in home groan centralized version control

MononcQc
May 29, 2007

the code you're looking for is actually in one of our five monorepos

FamDav
Mar 29, 2008
the only good way to do multirepo is with a system that lets you create ad-hoc monorepos out of it. this requires

* a way of declaring package dependencies
* a way of tracking package sets, and building/merging new packages into them that guarantees you didn't break things in a tertiary dependency
* a way of integrating this into a bunch of build systems like maven, rubygems, cargo, etc

you'll want something that can do cross-package dependency management/hiding eventually in your monorepos, but you can live without it for quite awhile.

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord

Cocoa Crispies posted:

some shells have pushd and popd but the last shell script i wrote didn't work wtih them

I think every shell has "cd -" though so that's a neat trick to remember next time

ThePeavstenator
Dec 18, 2012

:burger::burger::burger::burger::burger:

Establish the Buns

:burger::burger::burger::burger::burger:

MononcQc posted:

the code you're looking for is actually in one of our five monorepos

sorry mario but you're code is in another monorepo

MononcQc
May 29, 2007

FamDav posted:

the only good way to do multirepo is with a system that lets you create ad-hoc monorepos out of it. this requires

* a way of declaring package dependencies
* a way of tracking package sets, and building/merging new packages into them that guarantees you didn't break things in a tertiary dependency
* a way of integrating this into a bunch of build systems like maven, rubygems, cargo, etc

you'll want something that can do cross-package dependency management/hiding eventually in your monorepos, but you can live without it for quite awhile.

the equivalent for a monorepo tends to include build tools that can handle multiple languages, a CI strategy that doesn't need to recompile and run the tests for all projects when testing the changes in only one of them, etc.

anthonypants
May 6, 2007

by Nyc_Tattoo
Dinosaur Gum

Symbolic Butt posted:

I think every shell has "cd -" though so that's a neat trick to remember next time
code:
PS C:\Windows\system32> cd -
cd : Cannot find path 'C:\Windows\system32\-' because it does not exist.
At line:1 char:1
+ cd -
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Windows\system32\-:String) [Set-Location], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
 

PS C:\Windows\system32>

Mao Zedong Thot
Oct 16, 2008


anthonypants posted:

code:
PS C:\Windows\system32> cd -
cd : Cannot find path 'C:\Windows\system32\-' because it does not exist.
At line:1 char:1
+ cd -
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Windows\system32\-:String) [Set-Location], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
 

PS C:\Windows\system32>

:thunk: :thunk:

Mao Zedong Thot
Oct 16, 2008


yospos bicth

Luigi Thirty
Apr 30, 2006

Emergency confection port.

pre:
ViNCEd Version 3.91 (c) 2000-2001 Amiga Inc.
performed 1990-2001 by Thomas Richter.
New Shell process 3
3.Workbench39:> pushd
pushd: Unknown command
3.Workbench39:>

Luigi Thirty
Apr 30, 2006

Emergency confection port.

well I guess I can port my amiga reversi game to Objective-C and wire up a Cocoa UI for it

maybe i can make money off the MAC APP STORE (lol nobody makes money off the app store)

Cybernetic Vermin
Apr 18, 2005

FamDav posted:

the only good way to do multirepo is with a system that lets you create ad-hoc monorepos out of it. this requires

* a way of declaring package dependencies
* a way of tracking package sets, and building/merging new packages into them that guarantees you didn't break things in a tertiary dependency
* a way of integrating this into a bunch of build systems like maven, rubygems, cargo, etc

you'll want something that can do cross-package dependency management/hiding eventually in your monorepos, but you can live without it for quite awhile.

this is my recurring issue with people breaking up repos and adding a bunch of build and artifact management stuff instead: it is a lot of, often manual and error-prone, effort to recreate having a consistent global version history for the system. just having it as one repo alleviates the need for a lot of this stuff and simplifies understanding matters hugely

Mr SuperAwesome
Apr 6, 2011

im from the bad post police, and i'm afraid i have bad news
how do you deal with different microservices (well) with a monorepo?

package + deploy separately based on, i guess, folders? and what happens when code from service A and service B share library code C? are you essentially just as hosed as with multirepos except you have less commits + PRs?

FamDav
Mar 29, 2008

MononcQc posted:

the equivalent for a monorepo tends to include build tools that can handle multiple languages, a CI strategy that doesn't need to recompile and run the tests for all projects when testing the changes in only one of them, etc.

no matter what you're going to need all of those things. at a certain point you have hundreds/thousands of packages that build to a result, and when you change a package midway down the hierarchy you only want to build the 100 that would be impacted, not the other 5000 that wouldnt. also build parallelism

Cybernetic Vermin posted:

this is my recurring issue with people breaking up repos and adding a bunch of build and artifact management stuff instead: it is a lot of, often manual and error-prone, effort to recreate having a consistent global version history for the system. just having it as one repo alleviates the need for a lot of this stuff and simplifies understanding matters hugely

you want artifact management no matter what? unless i'm misunderstanding

and most of what you' want out of a consistent global version history exists in cargo.lock or gemfile.lock, or the WORKSPACE file in bazel. what theyre missing is

* the ability to separate the dependency set and its history from the source code history
* the ability to transactionally merge dependency sets or manually build new package revisions into them. also the ability to create child branches which can be merged back
* the ability to check out the correct variants of packages in your dependency set
* support multi-language, which really means having the common tools to prepare the build environment and then additional plugins to make build systems work if necessary

MrMoo
Sep 14, 2000

:lol: Cannot get 8 monitors working horizontally due to nVidia being awesome, however they do work vertically so CSS transform: rotate to the rescue. Not sure how well it is going to like the horizontal buffer for the GL context for the ticker though. 6144×1360 pixels even though the hardware is supposed to be 8×1366x768.

https://www.youtube.com/watch?v=ra4PxoDIvac

Painting into a 2D canvas and uploading as a texture to the GPU to scroll in WebGL because the DOM is too slow and CSS transitions are janky.

eschaton
Mar 7, 2007

Don't you just hate when you wind up in a store with people who are in a socioeconomic class that is pretty obviously about two levels lower than your own?

Luigi Thirty posted:

well I guess I can port my amiga reversi game to Objective-C and wire up a Cocoa UI for it

maybe i can make money off the MAC APP STORE (lol nobody makes money off the app store)

I would buy it

I like buying things from goons

it's my own special form of brokebrains I guess

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

Luigi Thirty posted:

well I guess I can port my amiga reversi game to Objective-C and wire up a Cocoa UI for it

maybe i can make money off the MAC APP STORE (lol nobody makes money off the app store)

apps are big now, gramps

Adbot
ADBOT LOVES YOU

ShimaTetsuo
Sep 9, 2001

Maximus Quietus

cinci zoo sniper posted:

rstudio is such garbage

rstudio is needs suiting imo

cinci zoo sniper posted:

im slowly starting to hate rstudio, much like i do hate ides such as spyder when i have alternatives available. sadly, i don't think ill get a visual studio seat to replace rstudio

you can use RTVS in the latest free versions of visual studio, what's the problem

  • Locked thread