-
-
Notifications
You must be signed in to change notification settings - Fork 664
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
VNL and other third-party updates touch a lot of files #2314
Comments
@phcerdan is your ITK version up-to-date before running the script? |
@thewtex I am not updating VNL or running the update script, I am just browsing the current git history of ITK. df92e582d82 |
@hjmjohnson are you aware of style updates, etc., that may have caused this? |
Yes, and a lot of clang-tidy changes as well to VNL core libraries. To be honest, I don't quite understand how to resolve this issue. |
I don't think it's a VNL issue. It must be about options/usage of |
Is the |
|
I'll look at converting |
I've updated #2324 to switch to the new script. |
#2324 demonstrated an update with only a few files from VNL changed. Can this be closed? |
Thanks @bradking for the improvement of the update script in #2324. If at some point in the future ITK rewrites its git history, we could solve the pollution generated from older updates of VNL and MetaIO. I recommend to keep an eye when updating third parties still using the old |
A couple of years have passed, and history is still getting polluted when using UpdateFromStream scripts. Updated history of the same example file shown in my original post: I am able to reproduce this when trying to update Eigen to another branch (from branch for/itk-3.4 to for/itk-master). diff --git a/Modules/ThirdParty/Eigen3/UpdateFromUpstream.sh b/Modules/ThirdParty/Eigen3/UpdateFromUpstream.sh
index e6c37c161bc..8e72f68af75 100755
--- a/Modules/ThirdParty/Eigen3/UpdateFromUpstream.sh
+++ b/Modules/ThirdParty/Eigen3/UpdateFromUpstream.sh
@@ -10,7 +10,7 @@ readonly subtree="Modules/ThirdParty/Eigen3/src/itkeigen"
# readonly repo="https://gitlab.com/libeigen/eigen"
# readonly repo="https://gitlab.kitware.com/third-party/eigen.git"
readonly repo="https://gitlab.kitware.com/phcerdan/eigen.git"
-readonly tag="for/itk-3.4"
+readonly tag="for/itk-master"
readonly paths="
Eigen/Cholesky
Eigen/CholmodSupport
Here are the logs after running the UpdateFromStream.sh for Eigen3 after that change. update_from_upstream_touch16k_files.txt The update seems successful, but it introduces a commit touching 16K files.
See PR #4265 as an example when updating Eigen. |
Was this branch rebased at some point? Third party import merge commits cannot just be rebased; I typically remove the commit from the |
Note that the robot does have a check to enforce that the merge happens properly and will detect and block any rebases like this. It does not seem the robot is enforcing this for ITK at the moment. I'll caution that it means that all changes to third parties must go through the import script. The
This import likely needs redone. Once performed, we can start enforcing all such imports. State of imports:
|
Yes, it was rebased. Before:
I updated the HEAD of external eigen to master: After:
I would like to try this. However, how do you interact with both ITK (or VTK), and the third party module in that way? I see that the update script creates (and then removes) a
It seems that we should enforce that check from now on in ITK. |
The import is not (and should not be) rebased. That is what
I agree. The first thing to do would be to get the "local diff" instances' diffs upstreamed into the imported repository. These can then be trivially reimported and should be "fine" according the the script. I would also recommend using (unannotated) tags in the import repos to preserve imported contents "forever". VTK started using |
I have been trying to remove current subtree (itkeigen), and try a fresh update-from-upstream, but getting conflicts in the
I still don't know how to perform the operation you suggested: What commit from the ITK history do you remove and replace with the exec update? Pinging @thewtex |
What is in
Chuck added a mode where it detects an empty directory and redoes the import. |
We are working with branches that have different histories and subtrees -- the logs may be misleading on how many files are actually being touched.
The update here looks good at a high level.
If both upstream and ITK edited the files, then a conflict resolution may be necessary. |
A rebase put the imported tree into the main ITK history without an
This ended up being an endless source of extra work when rebasing the import repository. This is why it is preferred that all changes to the import come through |
I understand now. I thought you were referring about the third-party project being rebased.
It looks fine in the PR, but the first of the two commits is touching all the ITK files.
It might be, but it pollutes the git history of all ITK files, which I think is extremely annoying. So, at the end I got it solved (I think!). As background, Eigen used to be stored in bitbucket, and we were using an non-official mirror for git. However, Eigen officially moved to gitlab,, the mirror became obsolete, and all the git hashes changed, like a history rewrite. That's why I was getting these merge problems, the for/itk-3.4 and for/itk-master have unrelated histories. So, I locally removed
Then move:
These changes result in only the itkigen subtree files being touched, instead of all ITK files. |
For example the last commit updating VNL: df92e582d82
12 commits in VNL provoke almost 3 million deletions everywhere in ITK
It's the update from upstream script having some hiccups? Is it expected?
I have noticed it when grabbing the history of a file, it always has these VNL and sometimes MetaIO massive patches on it, that do not seem related to the file.
For example. history of
itkEigenAnalysis2DImageFilter.h
:Before 2016-03-02, it wasn't happening.
@blowekamp @hjmjohnson @thewtex
The text was updated successfully, but these errors were encountered: