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