Hi Yunze, > Just wondering if there is a way to retain the git history in the pulsar-client-cpp directory?
Matteo's proposal already write: > git filter-repo --subdirectory-filter pulsar-client-cpp So you will retain the git history. Best, tison. Yunze Xu <y...@streamnative.io.invalid> 于2022年9月20日周二 16:27写道: > LGTM. I also listed the related files outside the pulsar-client-cpp > directory recently: > > - pulsar-common/src/main/proto/PulsarApi.proto: the Pulsar binary > proto file > - src/gen-pulsar-version-macro.py: generate the internal version info > - pulsar-client/src/test/proto/*.proto: test the protobuf native > schema feature > > It would not be a complicated job for that. Just wondering if there is > a way to retain the git history in the pulsar-client-cpp directory? > > Thanks, > Yunze > > > > > > On Sep 20, 2022, at 07:25, Matteo Merli <mme...@apache.org> wrote: > > > > https://github.com/apache/pulsar/issues/17724 > > > > > > > > ## Motivation > > > > Pulsar C++ code base is in the same main repository for the Pulsar > project. > > > > While the decision was the right one at the time, there is a > > considerable overhead > > in keeping the C++ client in its current position. > > > > ### Issues with the current approach > > > > The Pulsar repository has grown a lot in size and number of active > developers. > > > > 1. The frequency of changes in various parts of the codebase has > increased to a > > point where the amount of resources dedicated to CI is very > significant. > > > > Every change in Java code will trigger the CI jobs for the C++ > > client and every > > change in the C++ client will do the same. > > > > During a CI job we are building the C++ client multiple times: > > 1. For C++ and Python client tests > > 2. To build Python wheels to be included in the pulsar Docker > > images (for supporting > > Pulsar functions) > > > > 2. The release process for Pulsar has become very complex and > > requires building a > > large number of binaries for C++ and Python clients. This has > > become too much > > of a burden during the course of a Pulsar release. > > > > > > ## Goal > > > > Decouple the development of C++ and Python client libraries from the > development > > of the core components of Pulsar in Java. > > > > > > ## Changes > > > > ### Repositories > > > > 1. Move the C++ client code to a new repository > > `github.com/apache/pulsar-client-c++` > <http://github.com/apache/pulsar-client-c++> > > 2. Move the Python client code to a new repository > > `github.com/apache/pulsar-client-python` > <http://github.com/apache/pulsar-client-python> > > > > The change will be done without losing any history, extracting a > > sub-directory into > > a new Git repository. > > > > ``` > > git filter-repo --subdirectory-filter pulsar-client-cpp > > ``` > > > > ### Release process > > > > The release process will be split in multiple parts: > > > > 1. the main Pulsar release will only contain the Java parts (server > > distribution > > and Java client library) > > 2. The C++ client will have its own release schedule and versioning > > 3. The Python client will have its own release schedule and versioning > > > > #### Versioning > > > > Both C++ and Python clients will continue with their own individual > versioning. > > > > In order to not break anything or cause more confusion, we would need to > use > > a new version that is bigger than the current version (2.11.x). > > > > The suggestion is to start the new releases for both C++ and Python from > 3.0.0. > > > > > > #### Existing branches > > > > Existing branches of Pulsar, where the C++ client will still be in the > same main > > the repository and will be receiving bug fixes in their current location. > > > > The different location of the new C++ code will make the cherry-picking > process > > slightly more painful in the short term, though it will even out in long > term. > > > > > > ### Projects dependencies > > > > #### C++/Python --> Pulsar > > > > Both C++ and Python unit/integration tests are designed to run against > > a standalone > > instance of Pulsar broker. In the current form, they're using the > `master` code > > that is built to run the tests. > > > > After the split, the unit tests will use a Docker image of Pulsar. We > > can use a few > > different images to test for compatibility > > 1. Latest stable (eg: 2.10.1) > > 2. Nightly (Pulsar Docker image published every day from master branch) > > > > #### Pulsar --> Python > > > > To create a Pulsar image, we are now building the Python client wheel > > file and then > > installing it at build time. > > > > Instead, we are going to include a wheel file for a version of the > Python client > > that has been already released. > > > > #### Python --> C++ > > > > The Python client library is just a wrapper on top of the C++ client. > > Today these > > are built together, with Python wrapper code residing in a > > sub-directory of C++ client > > code, and compiled using the same CMake build script. > > > > By separating the Python client into a different repository, we are > going to > > depend on an already released version of the C++ client. > > > > > > #### Automated documentation in the website > > > > On the Pulsar website we are auto-generating C++ documentation with the > Doxygen > > tool and the Python one with Pdoc. > > > > Instead of just fetching the main repo code, the website build job > should be > > also fetching the new repos to run the tooling. > > > > > > > > > > > > > > -- > > Matteo Merli > > <mme...@apache.org> > >