-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document commit workflow and branches #163
Comments
Hi! 1 Yes P.S. I may be wrong somewhere as I haven't work with the repository for a long time. |
Ok, with responses from @mentaljam the way forward seems clear. I'll take on copying the obs packages to push them to chum if someone isn't already on it :) |
I'm not sure about using 'release' branches. I do have a case where, only on chum, the app is > 4, only and I use a branch for that. But generally, if an app works from 3 on up, I use master and release tags. Something like
Comments? |
Once the packages have arrived in chum:testing, I would ask rinigus or piggz to make @Olf0 @mentaljam and whoever is in the group at that time to obtain the rights to manage the chum packages. |
I've now copied @mentaljam s configs one to one and have builds on at https://build.sailfishos.org/project/show/home:poetaster:storeman (subprojects). The problem is that @mentaljam's repositories are 'disabled' piece for piece as he does new releases, if I see that correctly. And so the old builds won't be included in mine. To recreate this is a bit tricky and or very laborious. If I'm correct, we'd need to go back to the service file pointing at:
But this all feels wrong. |
Actually two are currently missing:
The one without suffix is for SFOS ≥ 4.2.0.
No, each sub-repo covers a range of SFOS release versions. This is not a temporal, but a spatial separation. Just recreate what he did: https://build.sailfishos.org/project/show/home:mentaljam
So what? Old Storeman builds are history. If you manage to successfully compile the recent Storeman release version (0.2.11) for all SFOS releases, IMO that is sufficient as a starting point. |
Yes:
See mentaljam's |
The current setup in @mentaljam's obs _service file with the current meta for that package only builds from 4.2 and up. Which means he MUST have changed the meta for which releases should be built in a step wise fashion. I'm assuming that by building from new branches with lest build targets, he's preserving the older repositories. I don't like it, but it's doable. I've reproduced this current state. I've sent him a PM to clarify. I'll ask rinigus to clarify how, or if we can, do this in chum. It's not how chum is set up. |
The 'what' is that without a build in obs people will not be able to install because the installer adds an SFOS release specific repository url. |
This is already done. It precludes repositories for anything older than 4.2. Which means that storeman is not installable from my replication of the current @mentaljam settings. But I've alread asked him to clarify how he did this. |
I think I see what you mean. He's maintained different packages for each release. I'll replicate those, too. |
No, there are three
No, as it is quite obvious and I documented it!
No, you did not. Do these really look the same to you?
Please do not bug him, he really lacks the time. Just read thoroughly, what I documented at https://github.com/storeman-developers/harbour-storeman/wiki/Delta-between-release-branches-and-master
Please don't. It is all quite obvious and understandable, if you would slow your speed a bit. P.S.: Sorry to state that clearly, your flurry of activities makes my dizzy. Why this haste? |
I'm faster than Jolla ;) Kidding. I just find it so aesthetically dissatisfying that I chose to think it was torture. But in reality, it's the lack of time that drives my haste. It's why I questioned if I was appropriate for this project. In any case, I've now replicated his structures with the addition of 4.3.0.15 (and also the addition of build excludes where they belong). And, I believe my PM to @mentaljam failed, and all is clear with rinigus. |
@Olf0 I've added you as maintainer of: https://build.sailfishos.org/project/show/home:poetaster:storeman When and if you are satisfied that they are correctly configured, you can promote them to chum directly, or delegate to me if you wish. |
P.S. You put the fire under my butt by emphasizing the coming 4.4 release! Yes, that's a good excuse! |
That is easy, even a tortoise is. 😜
No, you were contemplating and complaining about the tedious and consecutive manual changes to the
Then, please, take a break and do what is more urgent for you.
👍 |
Thank you.
The configuration per |
Ah, where? And when? Nowhere & never!
For making this an stressful afternoon for both of us? Plus reaching out to mentaljam and rinigus to involve them too (and unnecessarily). No, not seriously. |
I have a 9 year old child. I spent time on a trampoline today. But I'll simply slow down anyway. I produce to much useless text at the moment. Thanks for your patience! |
Actually, I was using meld to compare the successive releases, 3.2, 3.3 and 4.2 and thought, 'this can be simplified to everyone's benefit'. Personally, I'd punt 'sharing' (introduced in 4.2) and reduce this all to one repo and testing. But I'd have to do more testing first. Natch! That would get us from 5 down to 3. And allow us to use master plus release tags/releases instead of these branches that have barely a difference. The workflow is much clearer then. At least from my sometimes addled perspective :) |
I do not comprehend what you were intending to research by doing that WRT the git-repo structure and workflow.
No, the sharing mechanism was completely overhauled and fundamentally altered by Jolla in SFOS 4.2, hence Storeman's sharing code was changed significantly (was becoming much simpler). "Use the force, read the source." 😉
This is one type of a classic git workflow with a common master branch and various release branches. It utilises the fact, that commits are temporally ordered diffs: One has the release specific bits directly committed to the release branches and feeds everything common from a central branch ( |
I finalised the descriptions and package metadata (plus one package name) to have everything ready to be submitted to SailfishOS:Chum testing. I also had to introduce fixed tags rsp. commits, see SailfishOS:Chum Maintainer.md. We can revert that (I would actually prefer that) in your OBS repo after being in SailfishOS:Chum testing. If you have sufficiently time tomorrow and still the strong urge to push forward, then I would appreciate, if you contact @rinigus, sort out the process in detail (the general process is described in the SailfishOS:Chum developer's guide) to submit OBS home:poetaster:storeman to SailfishOS:Chum testing and execute it. Storeman's special OBS repo structure may pose a hurdle, but IMO this should be feasible: Please discuss and evaluate this with @rinigus, if you have the time. Do not hesitate to involve me briefly (per @mention or phone); I have to work but can make a break at almost any time. Also do not hesitate to do nothing at all, that is absolutely fine. Speed in not at all paramount, but diligence definitely is: Anything which must be reverted or redone will cost manifold more time than getting it right in the first place. Mind that the technical name always shall be Please name yourself, mentaljam and me as maintainers. Thank you. |
That is what I did. I, personally, would remove all the differences between the releases because they are of little utility. They do however come at the cost of maintaining multiple branches. Which means implementing fixes if, for instance, you find a security issue on one branch and need to apply a fix to multiple branches and rebuilding not one but three packages on obs. But it's not my call. Parsimony, aka KISS, is what motivates me, but also having experience managing diverging branches on other projects. |
As for all of: #163 (comment) I will get on this now. For the course of the day I won't be able to get back to it (child care, corona, etc.) but it will take some time for @rinigus to look it over. Great work! Thanks! |
From my experience it is rather Jolla regularly inducing such costs by incompatibly altering APIs. This even may be such simple things as the filesystem layout; e.g., where the SD card is mounted has been changed two times since SailfishOS' inception about 10 years ago (i.e., three different locations).
A security issue on one specific branch only needs to be fixed in this branch. An unlikely scenario though, as such a security issue would have to be located in one of the differences between the branches, which are minimal. For security issues common to all branches …
… this is extremely easy via git and …
… OBS does that even without touching it (by detecting altered source files).
Oh, I fully agree on this, although technical simplicity is often a matter of perspective. But technical means shall never be used just because they exist ("because we can") and the release branches should only diverge to the extent absolutely necessary to provide the same functionality across all supported SailfishOS releases. Ditching functionality for the "KISS" principle's sake is not an option IMO. |
This is false since the C++ on all branches is the same. So a fix to one is a fix to all. It can be automated, but I don't trust automatons. And whether or not it is easy, in security, as you know, every additional step, copy, etc., increases the error rate. In the end, I don't really understand the use case for sharing in storeman, but it's probably a case of being under socialized in some sense. Removing the sharing (which depends on > 4 sfos) get's us one repo. But, you make the call. If we can get it down to 2 branches in chum, that'd be ok by me. I also have some > 4 software. It benefits from the new WebView component as of SFOS > 4 and is software that would not be possible in older versions. So, it's not all bad when change comes :) I DO think we can agree that the sfos3.2 branch is superfluous? |
Ok, I saw this coming, but didn't want to be even more annoying than I already am:
The simple solution is to remove the > 4 sharing QML, carefully review any other changes and move to one release branch. The tricky version is conditionals in the spec which switch between QML files using old and new SFOS sharing methods. EDIT: I just tried the sharing (from the version compiled with your patches) and it's not even a complete implementation. In my case, I can only share via email. That might as well be a copy url operation. I would much prefer that but take some time to look at, please. It is, it seems, also being used in the CommentDelegate, not just the AppInformation page. But it boils down to the same thing. I'm going to re-implement this without '4isms' and see if I can get us down to a master branch. |
Ah, the sfos3.3 branch works fine on sfos 4.3.0.15. Hmmm. Perhaps we could start with just releasing that branch on Chum with all builds > 3.1 enabled for the initial test phase? |
Sure it does, except for the "sharing" functionality. So do the master and the devel branches, too.
Gimme a little time (in days!), first I want to address Rinigus' "right now it is a pain to accept and start enabling/disabling all the sfos/arch combinations" as not really comprehensible.
Personally this is my main interest (to keep it alive), because my "production" phone runs SFOS 3.2.1, as this is the latest release which does not provide some sort of a real bummer for me (only AAC playback is broken, so most internet radio stations are mute). |
If I find some time tonight I'm going to try to use the power of the spec file. getting the sfos4.2 branch WITH sharing compatible is a question of switching 2 files, maybe 3. That can be done with the spec file. I don't recall if:
|
The settings, if i remember correctly are not copied directly. I think in this case they would have to do it by hand. |
Yes, |
At least I have finished the original task "Document commit workflow and branches" by releasing the first proper version of the Wiki page "Git commit workflow".
As this whole endeavour ought to be fun for you, go ahead if you like to. Basically Storeman is working fine, only a few, minor janitorial tasks here at GitHub caught my eye. The only real issues of the Storeman / OpenRepos ecosystem currently are:
|
Reducing 4.2 and 3.3 to one branch, where source directory is 3.3 branch, and target directory 4.2 branch: Step 1.
Step 2. In the spec file:
And, for the record, I'm a vim user. I use yank and not ctrl this or that. that's for emacs users. in emacs I use evil. so, it's still yank. |
Sorry, I don’t like this approach, because it mixes code for different SFOS versions in one branch. Furthermore it works for QML whereas we still need branches for the C++ part. Also all RPMs become “cluttered” with additional files which not necessary would be used. But it’s only mine opinion... |
Ok, as I've mentioned elsewhere, could also be accomplished with a single unified diff. |
I went throught the difference in the c++. The 3.2 branch is not needed. All of the the c++, on initial inspection, not testing, will work. Let me know if I should mock up a version with a unified diff. |
@mentaljam, thank you for your contribution and advice. I highly value it, because you designed, implemented and used Storeman's git- and OBS-repo organisation and workflows.
This is a thought I also had. As long as I do not understand the requirement which drives this, I am reluctant to pursue this. Furthermore I assume it to be elegant to let the Storeman Installer download and install Storeman from the SailfishOS:Chum repository (because then one could alternatively use the SailfishOS:Chum GUI application for this), but not a requirement (or even a necessity); if the Storeman Installer continues to download and install Storeman from a "private" OBS-repository, that is fine, too. The awkward, half-manual bootstrapping process to have Storeman initially installed without resorting to the CLI (or a web-browser, a file-manager and SailfishOS' Settings app) is currently my main concern, which is exacerbated by the fact that the SailfishOS:Chum GUI application is affected by exactly the same issue as Storeman (despite having a slightly different workaround, which is IMO not any better), and a solution will be applicable to both (i.e., one could easily derive a "SailfishOS:Chum GUI app Installer" from the Storeman Installer) . P.S.:
… on web-pages? Really? |
BTW,
This is Jolla's new sharing mechanism. As always it came unannounced and might be changed at any time; but do not worry, that very likely will be "soon™" (i.e., by Jolla's standards). The code in Storeman is fine AFAICS, I assume only a single "sharing sink" has registered itself at the new sharing mechanism on your device: Jolla's email application. It is just a few lines of code to implement a "sharing sink" for the new sharing mechanism, so you can easily create more of them, if you want more. |
This is not the case. It could be 3 lines in the spec + a unified diff
Creating a branch that reduces the maintenance for the chum maintainers to basically zero is not only a laudable but even important goal. We have other work to do. I for one am working on numerous other apps and would like, for both storeman and chum-gui to finally work on the PackageKit issues. As far as the installer is concerned, I tried all of olf's patches and it looks fine to me. |
Yes. I use vim bindings almost everywhere. All IDEs, window manager, FF. Obviously not everywhere. But I'm not really capable o using, for instance, Open Office. |
The Also dependencies could be changed between versions. Of course we can put all the logic into the spec file. But, as I think, it's the path to complication. With branches we can keep the code clean for every supported bunch of SFOS versions. And if we decide to abandon some of it (3.2 for example) we can just drop the branch without patching (cleaning) the code. |
OBS is not the only place for building packages. A person may want to build a package themself. Git branches seems to me the most universal and the most simple solution |
Do we need the 3.2 target?
I agree with this. And of course don't want to manage too many (mileage varies) patches. But I don't like the idea of breaking the source of packes in CHUM proper every time a new release comes along and one of the two maintainers don't have time, are on vacation or ill and we wind up with conflicting builds. That's fragile. I would go along with the status quo if WE maintain the obs backend. I'm even willing to post my availability to a shared calendar to ensure that someone is available. But pushing it to chum creates work for others that I don't wish to be responsible for. I'm fine doing the work 'your way' as evidenced by the fact that I simply implemented your scheme in the first place. Then let us simply manage it outside of chum. The installer can remain in chum with no issues, though we should put chum meta data in the spec file so that people see instructions in the chum gui.l |
OBS is not the issue. The issue is the chum subsection which has a specific purpose and certain expectations. I don't like all of them but I accept them. |
I'm not sure because of linked libraries |
Ok, I'll take a crack at making a 3.x branch with 3.4 targets and see if I can find any volunteers to test. |
@poetaster, please stop asking things in circles, again and again, when you already have proper answers!
a. Devices with SFOS < 3.3.0 (e.g., my "production" phone) need it. P.S.:
Frankly said, you still do, and this is really stressing my patience. |
Sorry @poetaster, this escaped my attention in this convoluted thread:
Yes, please & thank you for offering this.
I will start merging stuff, when I have the GH-actions build runner up: Hopefully this weekend. |
So, let's fix that and reduce the complexity of this by one branch. |
@mentaljam, looking at these branches, I wonder what your commit workflow was and what we may have to change when working as a team?
dev
andmaster
are even, so I assume you developed indev
and then pushed commits tomaster
, correct?master
is "protected"): One branches out frommasterdevel to, e.g.,olf-patch-1
, poses a PR which has to be reviewed and ultimately is merged back tomasterdevel.This scheme makesdev
superfluous, AFAICS. If this is confirmed, I will delete it.Edit: I came to the conclusion that mentaljam's git flow is reasonable, especially when instrumented with automatic builds at every stage. Hence I documented his workflow at Storeman-Wiki: Git-commit-workflow.
master
into the release branchessfos3.2
for SFOS ≤ 3.2.0,sfos3.3
for SFOS ≥ 3.3.0 andsfos4.2
for SFOS ≥ 4.2.0, correct?release_sfos3.2
,release_latest
andtouring
, which appear to be the former release branches (before OBS), right? If they are indeed outdated branches, I will switch them to "read only" by a branch protect rule.@mentaljam, I posed all these question, that you can answer them by {Yes|No}, e.g., "3: Yes". But please add explanations where you think they are necessary.
@poetaster & @pherjung, any comments, ideas, contradictions etc.?
Everybody, please wait with committing to any of these branches until we have this sorted out and documented. You sure may work in your own, forked repository and pose pull requests, meanwhile.
If I have all answers, I will document them in the wiki, set the branch protection rules accordingly, and then we can start to commit to extant branches.
The text was updated successfully, but these errors were encountered: