Package: devscripts
Version: 2.20.4
Severity: wishlist

It would be nice to provide support for monorepo organizations, which
means a single git repository, with many directories and many tags.
I'll use as an example along this report a typical project using this
scheme, lumino: https://github.com/jupyterlab/lumino/ .

The subprojects are basically each a single directory, and the tags
describe the versions of those independently of one another ; for
luminowhere the tags have the format @lumino/<subproject>@<version>:

- a tag guarantees a stable version for a single subproject : for the
other subprojects, the same commit can be unusable ;

- a single version number can be common to several subprojects, but not
correspond to the same commit.

I tried various things to get things working, but to no avail : I
managed to get single-subproject going, but for two-subprojects, things
worked when I took some combinations of subprojects (algorithm and
coreutils), and failed with others (algorithm and application). After
some poking around, I noticed which commits gave the last versions :

algorithm 159c46252870a27e85766520b42e4d4f378a0913
application 443967554e00d43a42f989157c5185b83bccab09
coreutils 159c46252870a27e85766520b42e4d4f378a0913

It worked when both subprojects wanted the same commit!

Indeed, the current uscan, as far as I understand, makes a single
(bare) checkout under a name lumino-temporary.<number>.git where number
is time-based. So the first subproject triggers a checkout for a
particular commit, and when the second subproject kicks in, it finds
the directory already there and errors out. The fact that it's still
there is probably a combination of it not being removed (reported as
#972585) and the fact that if the first step is fast enough, the time-
based number is the same, and the second step finds an already-there
directory under the same name.

If this interpretation is correct, fixing #972585 should already
improve matters as there will be no more collisions ; but we'll still
need as many checkouts as there are subprojects, which is a bit much
(for lumino, 18 packages and 1 example means 19 subprojects - more to
come if I get more examples to run!).

Cheers,

JP

Reply via email to