-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
[NEEDS IP CLEARANCE] ARROW-10228: Contribute Julia implementation #8448
Conversation
Supersedes #8393 but still needs IP clearance. |
Note: I think this should probably be merged rather than rebase merged, but let me know how y'all want the history to look. I can probably accommodate anything. |
Looks like this PR needs the license headers prepended everywhere: maybe that can be done and then squashed into that last commit 0632ecf? |
@StefanKarpinski, I have a few things I want to cleanup/improve, so I can work on that over the next few days and then we can just do a new "release" in JuliaData/Arrow.jl and push that release commit here using the same script you have; does that sound reasonable? That would then include the license header changes. |
Additional changes can be made before or after the merge, but content of files in historical commits cannot be modified since that will change the tree hashes, which would makes it impossible to install the previous versions of Arrow.jl from this repo, which is the purpose of having this history in the repo. IMO, it would be easier and clearer to just make additional changes in this repo after the merge. |
We can have a bigger discussion (e.g. on the mailing list) but in other instances either we've done a rebase-merge or a squash-merge for these. It's our preference to maintain a linear commit history in the main branch. How important is it to be able to install the old releases using the exact tree hash at the time that they were released before? Since this code is still pre-"production" (I think? I haven't looked at the status of the integration tests) I'm not sure how valuable it is to be able to install the old releases |
We guarantee that published Julia package versions remain installable forever, and versions are immutably identified by tree hashes, so it's quite important. If one couldn't install old versions from this repo, then this would have to contain a new, different Julia package so that the old one could remain installable. Fortunately, a rebase should not affect the necessary subtrees, so rebasing should be fine. |
However, those rebased commits cannot modify any of the files in any way, e.g. by putting headers in them. The headers can be added in a newer commit for the first version that is published as an official part of arrow. |
Co-authored-by: Michael Savastio <savastio@gmail.com>
Co-authored-by: Michael Savastio <savastio@gmail.com>
Co-authored-by: Michael Savastio <savastio@gmail.com>
Co-authored-by: Michael Savastio <savastio@gmail.com>
Co-authored-by: Michael Savastio <savastio@gmail.com>
Co-authored-by: Michael Savastio <savastio@gmail.com>
Co-authored-by: Michael Savastio <savastio@gmail.com>
Can be closed in favor of #8547 |
This pull request merges a synthetic history of the Arrow.jl Julia package into the main arrow monorepo under the
julia
top-level directory. The history of Arrow.jl has been rewritten so that it appears that all development was done in this directory, retaining only a commit for each published version of the Arrow.jl package. Preserving this history (specifically the git tree objects associated with each commit) allows Julia's package manager to continue to install historical versions of Arrow.jl while having the arrow monorepo as the git repository of record going forward.I'm making this pull request on behalf of the Arrow.jl project (cc @quinnj, @ExpandingMan) as the resident git mage. Let me know if there's anything I should change about this PR to integrate better into the arrow project.
For my own record (in case I need to do this again), here's the code I used to generate the synthetic history:
Then I used the following
.git/config
in a clone ofarrow
:With that setup, you just do this in the
arrow
clone:Enter the merge commit message when prompted.