Re: Bug Report: Subtrees and GPG Signed Commits
flat view
From: Stefan Beller <hidden>
Date: 2018-01-30 23:17:37
On Tue, Jan 30, 2018 at 11:15 AM, Stephen R Guglielmo [off-list ref] wrote:
Hi, just following up on this bug report. I have not heard back. Is there additional information that's needed? Is there a better place to file bug reports? Additionally, I have confirmed that this bug still exists with git version 2.16.1. Thanks On Thu, Jan 18, 2018 at 11:19 AM, Stephen R Guglielmo [off-list ref] wrote:quoted
Hi, just following up on this bug report. I have not heard back. Is there additional information that's needed? Is there a better place to file bug reports? Thanks On Sat, Jan 6, 2018 at 5:45 PM, Stephen R Guglielmo [off-list ref] wrote:quoted
Hi all, I've noticed an issue regarding the use of `git subtree add` and `git subtree pull` when the subtree repository's commit (either HEAD or whatever commit specified by the subtree command) is signed with GPG. It seems to work properly if the commit is not signed but previous commits are. The gist of the issue is that `git subtree add` does not add the subree properly and a "fatal: Not a valid object name" error is thrown. Running `git subtree pull` does not pull any upstream changes after that ("'subtree' was never added"). I have not done extensive testing, however, below are instructions to reproduce the issue. This was tested using git version 2.15.1 installed via Homebrew on MacOS. I did not test with the built-in version of git on MacOS. Thanks, Steve # Create a new repository mkdir repoA && cd repoA git init echo "Test File in Repo A" > FileA git add -A && git commit -m 'Initial commit in repo A' # Create a second repository cd .. && mkdir repoB && cd repoB git init echo "Test File in Repo B" > FileB git add -A && git commit -m 'Initial commit in repo B' # Create a signed commit in repo B echo "Signed Commit" >> FileB git commit -a -S -m 'Signed commit in repo B' # Now, add repoB as a subtree of RepoA cd ../repoA git subtree add --prefix repoB_subtree/ ../repoB/ master --squash # Output: git fetch ../repoB/ master warning: no common commits remote: Counting objects: 6, done. remote: Compressing objects: 100% (2/2), done. remote: Total 6 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (6/6), done. From ../repoB * branch master -> FETCH_HEAD fatal: Not a valid object name gpg: Signature made Sat Jan 6 17:38:31 2018 EST gpg: using RSA key 6900E9CFDD39B6A741D601F50999759F2DCF3E7C gpg: Good signature from "Stephen Robert Guglielmo (Temple University Computer Services) [off-list ref]" [ultimate] Primary key fingerprint: 6900 E9CF DD39 B6A7 41D6 01F5 0999 759F 2DCF 3E7C 4b700b1a4ebb9e2c1011aafd6b0f720b38f059a4 # Note, git exits with status 128 at this point. # FileB was in fact added and staged to repoA, despite the "fatal" above. Commit it: git commit -m 'Add repoB subtree' # Ok, let's make another commit in repoB and try a `subtree pull` instead of `subtree add` cd ../repoB echo "Another Line" >> FileB git commit -a -S -m 'Another signed commit' cd ../repoA git subtree pull --prefix repoB_subtree/ ../repoB master --squash # Output: warning: no common commits remote: Counting objects: 9, done. remote: Compressing objects: 100% (3/3), done. remote: Total 9 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. From ../repoB * branch master -> FETCH_HEAD Can't squash-merge: 'repoB_subtree' was never added. # Note, git exits with status 1 at this point. # RepoB's third commit ('Another signed commit') is not pulled into the subree in repo A. # This can be verified by running a diff: diff -qr --exclude ".git" repoB_subtree ../repoB # Output: Files repoB_subtree/FileB and ../repoB/FileB differ
There has not been feedback for a while on this thread. I think that is because subtrees are not in anyone's hot interest area currently. This is definitely the right place to submit&discuss bugs. Looking through "git log --format="%ae %s" -S subtree", it seems as if Avery (apenwarr@gmail.com) was mostly interested in developing subtrees, though I think he has moved on. Originally it was invented by Junio, who is the active maintainer of the project in 68faf68938 (A new merge stragety 'subtree'., 2007-02-15) Thanks, Stefan