Merge LibLaserCut into VisiCut repository? #600
Replies: 8 comments 8 replies
-
Hi, fine with me. Can you give me concrete instructions or even a pull request? |
Beta Was this translation helpful? Give feedback.
-
and we should update the readme of the LibLaserCut repo afterwards that development has moved to the VisiCut repo |
Beta Was this translation helpful? Give feedback.
-
I'm not sure and think we should discuss this a little further before breaking stuff. Looking at your arguments:
Some things that may not work properly, depending on how the transition to monorepo is implemented:
This should also be checked for the backwards migration: Will git blame, commit IDs etc. still work? Overall, I'm not yet convinced that the solution will bring more benefit than harm. |
Beta Was this translation helpful? Give feedback.
-
Note to myself: read https://gist.github.com/b7988c2ab919cb01a9954816a5dec25b |
Beta Was this translation helpful? Give feedback.
-
It would be good to test this somewhere else first. If the issue labels are not correctly mapped, then the PR will create a hundred "this issue was mentioned in #..." comments.
What will definitely break is the issue mapping outside of Github because issue IDs are not unique. So if a commit says "Change foo to fix #...", then a normal Git GUI or command-line user will not know if this refers to LibLaserCut or VisiCut. New developers will not know about the old separate LibLaserCut issue tracker.
|
Beta Was this translation helpful? Give feedback.
-
Changing the commit messages would change the commit IDs, which is also not so great.
|
Beta Was this translation helpful? Give feedback.
-
I'm still on this, time has been rather tight lately, but after frustrating research (seriously how is everything so much more involved in git than in mercurial) I have found that git filter-branch is worth a closer look for moving files into different directories. This being said, I'm inclined to just simply pull the changes in a branch with parent -1, move them into a subdirectory and then merge with master. |
Beta Was this translation helpful? Give feedback.
-
Sounds good, with the downside that it will break all issue references from LibLaserCut: if the commit message or code comment says "fix #600", then this will link to the wrong repository and also create "spam" comments in unrelated issues ("This issue was mentioned by user Xyz in commit abcd").
Probably, even creating your fork will create such spam comments.
Use case:
- Something breaks in LibLaserCut
- git blame points to a commit from two years ago whose message says "fixes #600"
- the link points to a completely unrelated issue of VisiCut instead, creating confusion
|
Beta Was this translation helpful? Give feedback.
-
We want a Monorepo (I do, and I hope you do, too)
I'd like to merge the LibLaserCut repository into this one. This can be easily done simply by pushing from LibLaserCut to this one, preserving the full history and everything.
Now, why would I want a Monorepo?
It might just be me, but I find dealing with multiple repositories annoying and rather time consuming, even more so for sub-repositories.
For instance, creating pull requests that depend on a modification in the other repository are prone to fail their CI check.
Refactorings that affect the whole project are impossible to do in atomically with multiple repositories.
A monorepo
What this isn't
I'm not talking about combining both artefacts into one. Both VisiCut and LibLaserCut can and should still remain two individual maven artefacts / projects / poms that can be published and depended on independently.
I'd have a subdirectory for LibLaserCut in which it, together with its old change sets, can live happily ever after.
Is there a way back if we ever wanted to have separate repositories again?
Yes, all the changes will still be there and can easily be pushed back to a different repository. History, comment, everything will be preserved.
So, just in the unlikely case that one day there will be a need to have the added complexity of dealing with multiple repositories, the whole thing can be undone and LibLaserCut with its history can be moved back to where it came from.
Thoughts?
Beta Was this translation helpful? Give feedback.
All reactions