Split repository into master (library source) and support (CI, docs, examples) branches.#287
Split repository into master (library source) and support (CI, docs, examples) branches.#287ryanofsky wants to merge 2 commits into
master (library source) and support (CI, docs, examples) branches.#287Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
|
Updated f26575b -> 5432abc ( |
uqlidi
left a comment
There was a problem hiding this comment.
I agree with @Sjors's opinion:
I think having a separate support branch would be especially confusing to anyone new to this repository. If it's not the default branch, then the repo looks undocumented and untested. If it is the default branch, now it's difficult to contribute because you need to deal with two branches.
Why don't you just use filtered subtrees? I think that's a better solution and cleaner instead of making different branches that contain whole different codebases.
|
This is what the repo will look like after this change: https://github.com/ryanofsky/libmultiprocess/tree/pr/supportm The README points to the relevant documentation on the Updating documentation along with code changes becomes more tedious, because you have to open two separate pull requests. New contributors may initially be confused about what branch to open a PR to. Both aren't huge issues though. Perhaps a middle ground could be to:
|
|
Thanks it's true this PR is taking a maximalist approach. I mostly just want to get rid of CI code in the master branch and would be ok with leaving examples and markdown documentation where they are. But I do think they would be better to move because:
I think this could be improved by mentioning the
This doesn't deal with the problems I want to solve of being able to update CI scripts and documentation and other ancillary files more freely and give more attention to the PRs affecting master and bitcoin core. Filtering subtrees in the bitcoin core repository only affects the review that happens that repository, which is normally less detailed and not as useful as the review that happens here. But if you have specific concerns with this approach, would be good to know about though. I've been using branches with different trees for a very long time locally and haven't run into problems with them. And it seems github support is very good as well. |
that's better yeah but it's too much. there are a lot things are separated
I am thinking about a solution is similar to this and I think it should be more efficent. why don't make a distribtuion branch and keep the master as it is? Also, we can make a CI workflow to automate the distribution by making the github bot pushing the source files only that's required to bitcoin core and exclude docs, ci and examples. I think that's the optimal solution for the problem. you kept the source without possible issues in future and without make it weird for new people |
Yes, that should be fine. Although perhaps it's nicer / more intuitive to have a separate
(doc can be added to .gitignore) Then you might as well do the same with the examples. |
615a94f cmake: document ONLY_CAPNP option in target_capnp_sources (Ryan Ofsky) 620f297 cmake: make target_capnp_sources use CURRENT dirs (Ryan Ofsky) Pull request description: Tweak `target_capnp_sources` to use `CMAKE_CURRENT_SOURCE_DIR` and `CMAKE_CURRENT_BINARY_DIR` instead of `CMAKE_SOURCE_DIR` and `CMAKE_BINARY_DIR` to compute include directory paths. This allows `target_capnp_sources` to work properly inside libmultiprocess when libmultiprocess is used as a subproject and `CMAKE_SOURCE_DIR` point somewhere outside of it, as happens in support branch used by #287. This is also a good change to make more generally because `CMAKE_CURRENT_SOURCE_DIR` is a more predictable path than `CMAKE_SOURCE_DIR` and is passed in by all current `target_capnp_sources` callers. ACKs for top commit: hebasto: re-ACK 615a94f. Tree-SHA512: 978a3172dee80cff4dd2afb4858347216c9211a6f182b6b0b9ad71641f30ccaea619d5ddd61484cd08375dd21c290b8fb5b52307baadc8042443b12bd6c3b908
Support files moved to support branch: git rm -r .github/ ci/ doc/ example/ shell.nix Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Splits the repository so C++ source stays on master and CI scripts, docs, and examples move to the support branch. Master's CI workflows become thin wrappers that delegate to the reusable workflows on the support branch. GitHub Actions changes: - ci.yml, bitcoin-core-ci.yml: replaced with thin wrappers that call the corresponding reusable workflows on the support branch. CMakeLists.txt: - Remove add_subdirectory(example): example/ moves to the support branch and is built from support's own CMakeLists.txt. README.md: - Update documentation links to point to the support branch. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
bitcoin-core#287 is removing the mpcalculator, mpprinter, and mpexample targets with causes an error in the Bitcoin Core CI jobs without bitcoin/bitcoin#35454. Switch the Bitcoin Core checkout in both jobs to use refs/pull/35454/merge so CI tests against the compatible version. A BITCOIN_CORE_REF env var is introduced at the top of the file; once (and keep the var in place for any future API compatibility cycles). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
re: #287 (comment)
That's a good point and there is actually no reason to have a hidden directory, so the instructions are now simplified to just recommend re: #287 (comment)
So your idea is to have a Rebased 5432abc -> 2c078da ( |
|
Occurred to me that bitcoin/bitcoin#33362 is a good example of why I think separating CI scripts from code would be good. If the CI change in that PR was done in its own PR, instead of combined with python test and test framework changes, the downsides of adding a static IP would have been more likely to be considered since adding it would be the main change not just a secondary tweak. A separate PR could also have attracted more review from reviewers who care about CI configuration and usability but may not be interested in reviewing a larger code change. |
I understand this is subjective, but I don't think this is true. I didn't see that this would break from reviewing the code, and I don't think anyone would have caught this, unless they try to run two CI containers at the same time. I am not sure if it is beneficial to force that stuff is split up. In 33362 those were already two commit, and it would have been trivial to ask the author to split those into two pull requests, if there was a benefit. Conversely, it could be confusing if CI changes are forced to be always separate from code changes. E.g. https://github.com/bitcoin/bitcoin/pull/34662/changes just go hand in hand. That simple pull request would then be three separate changes/pulls:
|
This PR removes documentation, CI scripts, and examples from the
masterbranch, moving it to asupportbranch instead.This reduces the number of files that need to be imported into the bitcoin core subtree, and should make subtree bumps in bitcoin easier to review since they will no longer contain extraneous changes. It should also facilitate review within the libmultiprocess repository so PRs that actually modify the library can receive greater attention and PRs that only change support files can be merged more quickly.
This PR is an alternative to trying to exclude support files from the bitcoin core subtree (#276) which is a more complicated change that does not have same review benefits. The idea was originally brought up in #232 (comment).
This PR depends on #288 should be merged after it.