logoalt Hacker News

gcrtoday at 12:48 PM1 replyview on HN

So it’s a workspace that includes changes from multiple branches at once, like `jj new revset-1 revset-2 revset-3 …` ?

(Git has octopus merges, jj just calls them “merge commits” even though they may have more than two parents)


Replies

ChrisMarshallNYtoday at 1:07 PM

Don't remember exactly. If I think about it, it could be quite complex.

Git has the concept of "atomic repos." Repos are a single unit, including all files, branches, tags, etc.

Older systems basically had a single repo, with "lenses" into sections of the repo (usually called "workspaces," or somesuch. VSS called them something else, but I can't remember).

I find the atomic repo thing awkward; especially wrt libraries. If I include a package, I get the whole kit & kaboodle; including test harnesses and whatnot. My libraries thend to have a lot more testing code than library code.

Also, I would love to create a "dependency repo," that aggregates the exported parts of the libraries that I'm including into my project, pinned at the required versions. I guess you could say package managers are that, but they are kind of a blunt instrument. Since I eat my own dog food, I'd like to be able to write changes into the dependency, and have them propagate back to their home repo, which I can sort of do now, if I make it a point to find the dependency checkout, make a change, then push that change, but it's awkward.

But that seems crazy complex (and dangerous), so I'm OK with the way things work now.

show 3 replies