[llvm-dev] 'git llvm push' not working for me on Windows (original) (raw)

whitequark via llvm-dev llvm-dev at lists.llvm.org
Sat Feb 2 07:44:04 PST 2019


On 2019-02-02 14:16, James Y Knight via llvm-dev wrote:

Hm, there's only a few affected files (files that both have svn:keywords set, and contain a keywordkeywordkeyword).

We'll need to remove or replace all of these anyhow, since the expansion doesn't actually function with a git checkout. clang/lib/Basic/Version.cpp: StringRef SVNRepository("$URL$"); clang/tools/scan-build/man/scan-build.1:." IdIdId clang/www/cxxdrstatus.html:

Last updated: DateDateDate

clang/www/cxxstatus.html:

Last updated: DateDateDate

llvm/utils/vim/syntax/llvm.vim:" Version: RevisionRevisionRevision llvm/utils/vim/syntax/tablegen.vim:" Version: RevisionRevisionRevision llvm/utils/vim/vimrc:" RevisionRevisionRevision

You could add a .gitattributes with content like

and then git would expand IdIdId to Id:sha1Id: sha1Id:sha1 and back, just like SVN. I don't think there's an easy way to make this work for anything else, like URLURLURL or DateDateDate though.

On Fri, Feb 1, 2019 at 9:37 PM Petr Hosek <phosek at chromium.org> wrote:

I already figured it out. Turned out some sources like clang/lib/Basic/Version.cpp contain Subversion keywords (in this particular case it's URLURLURL). Subversion would automatically substitute these in the internal checkout that's used by git-llvm-push, but Git wouldn't, so when trying to apply the patch generated by Git you'll get and error because while Git patch has $URL$, the Subversion checkout would have something like $URL: https://llvm.org/svn/llvm-project/cfe/trunk/$. The workaround I came up with is to do the keyword substitution in the generated patch (https://github.com/llvm/llvm-project/blob/master/llvm/utils/git-svn/git-llvm#L321).

On Fri, Feb 1, 2019 at 2:56 PM <paul.robinson at sony.com> wrote: The usual workaround is to do rm –rf .git/llvm-upstream-svn and try again. You could also patch llvm/utils/git-svn/git-llvm to add the --verbose option to the git apply command, which would provide better diagnostic output. HTH, --paulr FROM: Petr Hosek [mailto:phosek at chromium.org] SENT: Wednesday, January 30, 2019 10:52 PM TO: Robinson, Paul CC: James Y Knight; llvm-dev; vedantkumar at apple.com SUBJECT: Re: [llvm-dev] 'git llvm push' not working for me on Windows I just hit this failure as well. I've uploaded the log to https://reviews.llvm.org/P8126. The error message is: git apply -p2 - returned 1 error: patch failed: lib/Basic/Version.cpp:14 error: lib/Basic/Version.cpp: patch does not apply Patch doesn't apply: maybe you should try git pull -r first? On Thu, Nov 29, 2018 at 1:18 PM via llvm-dev <llvm-dev at lists.llvm.org> wrote: Excellent, thanks! --paulr FROM: James Y Knight [mailto:jyknight at google.com] SENT: Thursday, November 29, 2018 12:00 PM TO: Robinson, Paul CC: Mikhail Ramalho; vedantkumar at apple.com; llvm-dev SUBJECT: Re: [llvm-dev] 'git llvm push' not working for me on Windows Aha! From your output I figured out what I screwed up. Sorry about the trouble... Illustration of the issue: svn checkout --depth=empty https://llvm.org/svn/llvm-project svn update --depth=immediates --parents llvm/trunk/test/DebugInfo svn update --depth=immediates --parents llvm/trunk/test/DebugInfo/Generic After these commands, I expected Generic/ to be populated, but it is not, because the "--depth=immediates" creates the directory, but then it marks it as depth=empty. And then, later, calling svn update --depth=immediates doesn't override that. This is apparently not a bug in subversion, that's is how it is "supposed" to work. It's just super confusing. If I use --depth=files instead of --depth=immediates, that fixes this issue, since in that case, it won't create the subdirs and mark them as depth=empty. Also, the --parents flag causes the same issue for parent directories. Ugh. After the following, I'd expected llvm/trunk/ to get populated, but it doesn't get populated, because the first 'svn update' created it with sticky depth=empty: svn checkout --depth=empty https://llvm.org/svn/llvm-project svn update --depth=files --parents llvm/trunk/test/DebugInfo svn update --depth=files --parents llvm/trunk/ Subversion has a --set-depth= argument which "fixes" this, but unfortunately, that argument also recursively deletes any subdirs which have already been populated. (I just want to add things, not delete already-downloaded data.) In summary: subversion's sparse-checkout command-line UI is really confusing and annoying! Ugh! I've pushed a commit (r347883) to hopefully fix this issue. This time for sure. You will probably need to remove the .git/llvm-upstream-svn directory, one last time, for the fix to work. On Wed, Nov 28, 2018 at 3:55 PM <paul.robinson at sony.com> wrote: Poking around in the .git\llvm-upstream-svn tree, I find that llvm\trunk\test\DebugInfo\Generic is empty, as are all the other subdirectories of test\DebugInfo that I tried. I have other files in the checkin that are in leaf directories but those files all exist. I hacked git-llvm to add a –verbose option: git apply --verbose -p2 - returned 1 Checking patch include/llvm/IR/DebugInfoFlags.def... Checking patch include/llvm/IR/DebugInfoMetadata.h... Checking patch lib/AsmParser/LLLexer.cpp... Checking patch lib/AsmParser/LLParser.cpp... Checking patch lib/AsmParser/LLToken.h... Checking patch lib/Bitcode/Reader/MetadataLoader.cpp... Checking patch lib/Bitcode/Writer/BitcodeWriter.cpp... Checking patch lib/IR/AsmWriter.cpp... Checking patch lib/IR/DebugInfoMetadata.cpp... Checking patch test/Assembler/disubprogram.ll... Checking patch test/Assembler/invalid-disubprogram-uniqued-definition.ll... Checking patch test/Bindings/llvm-c/debuginfo.ll... Checking patch test/Bitcode/DISubprogram-distinct-definitions.ll... Checking patch test/Bitcode/DISubprogram-v4.ll... Checking patch test/Bitcode/DISubprogram-v4.ll.bc... Checking patch test/DebugInfo/Generic/invalid.ll... error: test/DebugInfo/Generic/invalid.ll: No such file or directory Checking patch test/DebugInfo/debugify.ll... Checking patch test/Linker/replaced-function-matches-first-subprogram.ll... Checking patch test/Transforms/GCOVProfiling/three-element-mdnode.ll... Patch doesn't apply: maybe you should try git pull -r first? FROM: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] ON BEHALF OF via llvm-dev SENT: Wednesday, November 28, 2018 2:39 PM TO: mikhail.ramalho at gmail.com; jyknight at google.com CC: llvm-dev at lists.llvm.org; vedantkumar at apple.com SUBJECT: Re: [llvm-dev] 'git llvm push' not working for me on Windows And now it's failing for me also… complaining about "no such file or directory" on a file that plainly exists. Verbose log attached. --paulr FROM: Mikhail Ramalho [mailto:mikhail.ramalho at gmail.com] SENT: Wednesday, November 28, 2018 12:27 PM TO: jyknight at google.com CC: Robinson, Paul; llvm-dev at lists.llvm.org; vedantkumar at apple.com SUBJECT: Re: [llvm-dev] 'git llvm push' not working for me on Windows OK, I've managed to do it: I was trying to push it from a build/ directory, maybe that's why the git apply was failing. Pushing the commit from the root of the repo worked. Em qua, 28 de nov de 2018 às 16:40, Mikhail Ramalho <mikhail.ramalho at gmail.com> escreveu: Hi, The patch only changes one file in clang. Here's the patch: https://reviews.llvm.org/D54974 Attached the log. It seems to complain about the git apply -p2. Maybe it's something related to arc? Em qua, 28 de nov de 2018 às 15:37, James Y Knight <jyknight at google.com> escreveu: Can you please run "git llvm --verbose push" and send me the output? BTW, I've just committed a fix for the handling of binary patch data when you're running it under python3.X. I don't believe that was a regression from my recent changes, but if you're using python3, you could see if that fixes it for you. On Tue, Nov 27, 2018 at 7:20 PM Mikhail Ramalho via llvm-dev <llvm-dev at lists.llvm.org> wrote: I'm facing this now on Linux. Any idea how to fix it? Em seg, 26 de nov de 2018 às 20:22, via llvm-dev <llvm-dev at lists.llvm.org> escreveu: I've verified that none of the files I tried to check in had Windows-style line endings. It's something else. --paulr FROM: vsk at apple.com [mailto:vsk at apple.com] ON BEHALF OF Vedant Kumar SENT: Thursday, November 22, 2018 9:38 AM TO: Robinson, Paul CC: zturner at google.com; jyknight at google.com; llvm-dev at lists.llvm.org SUBJECT: Re: [llvm-dev] 'git llvm push' not working for me on Windows As a test case, try committing a change to clang/test/SemaCXX/sourceranges.cpp? I believe most editors force Windows-style line endings for that file (they show up in my vim as “^M”). I recently tried to commit a change to that file using “git llvm push” on macOS, but hit what I think is the same issue. At least, the error message was the same. vedant (sent from my iPhone) On Nov 21, 2018, at 10:06 AM, via llvm-dev <llvm-dev at lists.llvm.org> wrote: FTR the commit where it failed for me had both llvm and clang changes. I wonder if that contributed. --paulr FROM: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] ON BEHALF OF via llvm-dev SENT: Monday, November 19, 2018 6:01 PM TO: zturner at google.com; jyknight at google.com CC: llvm-dev at lists.llvm.org SUBJECT: Re: [llvm-dev] 'git llvm push' not working for me on Windows Hm. Just now it worked for me for r347271. If it happens again I'll try verbose mode and attach a log. Thanks, --paulr FROM: Zachary Turner [mailto:zturner at google.com] SENT: Monday, November 19, 2018 5:26 PM TO: James Y Knight CC: Robinson, Paul; llvm-dev SUBJECT: Re: [llvm-dev] 'git llvm push' not working for me on Windows Usually every time I've seen that error message, it's been related to line ending normalization. But James is right, I did use it successfully this morning as well as yesterday. On Mon, Nov 19, 2018 at 1:03 PM James Y Knight via llvm-dev <llvm-dev at lists.llvm.org> wrote: It does sound like I must've broken something, but I believe zturner used it on windows successfully. Perhaps you could help me debug the issue? Possibly running it with --verbose would show something useful. On Mon, Nov 19, 2018 at 1:32 PM <paul.robinson at sony.com> wrote: I am consistently getting: git apply -p2 - returned 1 error: include/llvm/IR/DIBuilder.h: No such file or directory [[ etc ]] Patch doesn't apply; maybe you should try git pull -r first? My usual response to a problem from git-llvm (which is most often an anti-virus issue) is to blow away .git\llvm-upstream-svn but that doesn't help this time. I see James Knight did a "performance improvement" on Friday, perhaps that doesn't work so well on Windows? The main performance cost is one-time, and as long as my anti-virus isn't trashing things behind my back the performance is just fine; so it's not clear this is really a necessary improvement. If it's interfering with developing the new git repo, then I'd suggest making it optional or platform-dependent. As a workaround I fetched the previous version of git-llvm and put it earlier in my PATH, that worked. --paulr


LLVM Developers mailing list llvm-dev at lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


LLVM Developers mailing list llvm-dev at lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


LLVM Developers mailing list llvm-dev at lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev -- Mikhail Ramalho.


LLVM Developers mailing list llvm-dev at lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev -- Mikhail Ramalho. -- Mikhail Ramalho.


LLVM Developers mailing list llvm-dev at lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


LLVM Developers mailing list llvm-dev at lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-- whitequark



More information about the llvm-dev mailing list