-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
Git Push Not working for git:// protocol servers #907
Comments
I was searching google and I found that this bug is shown in Bug 89 of msysgit on github: The workaround, which is shown in the code but not in the thread itself, is to do: git config --global sendpack.sideband false Perhaps this would be a good global setting for the installer to set? Since this is essentially undocumented (or at least unpublicized), having a default-working configuration seems to be the best plan of action, unless it breaks something. |
@johnnyb is this still the case with Git for Windows v2.21.0 that you cannot push via I ask because we're about to release v2.22.0, and we dropped support for that config setting under the assumption that it is no longer necessary. |
I will try to test it out this week and double-check. |
v2.22.0 is already out. With the config setting in question removed. Hopefully your tests come back saying that it's no longer needed. Because otherwise, we're a little late. |
This option is still required for pushing over git:// After trying to figure out why this option was working intermittently I discovered we had two different versions of git bash installed, with the option (and thus no hanging) only working in the older version. |
Mingw64 is what shows up in the prompt, and the Git directory is in the 64 bit program files directory, in case that matters (as I noticed some commits related to this). Not sure where the discussion occurred that assumed this wasn't needed - my guess is that the same steps used to reproduce the bug would show it still exists. |
I do not understand. Could you explain this in more detail?
I think I relied on the test suite to catch this, but having had a quick look, we skip the git:// related tests on Windows because the way they are implemented require FIFOs which we cannot use (there is a FIFO emulation in MSYS2 that allows Maybe you could re-introduce 1da059c via a PR and add a test case that does not require FIFOs? |
Re Mingw64, I saw a commit message about the issue not showing up in mingw-w64 gitgitgadget@4f9dd21 I'm not a C developer nor am I familiar with the internals of this project so I'm not sure where I'd start for making a PR :/ |
If you experience this issue with a 64-bit version of Git for Windows, then
You will have to
It is not exactly as easy as buying an apple pie. On the positive side, it will get you what you want, as quickly as you can make it so. |
I will try to take care of this throughout this week. Let's see how quickly I can send a PR. Issue affects me as well, so reason enough to contribute. @dscho how do you ensure that this will stick around? Will it also be sent to upstream Git or will it be local to Git for Windows? Edit: regarding PRs, do you have any guidelines? Signed commits or so? Rebased and squashed to a single commit? Do I also have to test with the 32-bit SDK or can I rely on your CI setup? |
re your edit:
Signed commits, small simple steps, usually start at current master, and keep the base constant, though watching for conflicts on next/pu. See https://github.com/git-for-windows/git/blob/master/CONTRIBUTING.md and SubmittingPatches. The patches do stick around and eventually get up-streamed, especially when battle tested. |
Via that regression test you planned on implementing ;-)
It was already sent to the Git mailing list: gitgitgadget#137 (due to the missing regression test, I was under the impression that it was no longer necessary in Git for Windows). So as soon as you come up with that resurrection accompanied by a regression test, I will be working towards getting this into upstream Git, too. As to PRs, there were a couple good ones recently that were merged. Maybe they illustrate the shape we like PRs to be in? |
Hehe, alright. Sounds like a plan. One more question: are there any resources about the research so far into what goes wrong on Windows? The symptom appears to be pretty much a deadlock situation. As I understand it has to do with two "concurrently" issued requests on a single socket? Any references/pointers I can look into to get me started? I'd rather try to tackle (mid term) the underlying issue. This sounds like a tricky problem that could use some loving care ;-) Also, I'll have a look at previous PRs as well. Already read through large parts of the documentation linked before, but since there are plenty of cross-references elsewhere, it's a bit tedious. |
I don't think so. The closest is #304, but I don't think that this is actually addressing the culprit.
I'm not so sure about that. It affects only the 😄 |
For the record, my advice still stands. I will mark this as "up for grabs" to indicate that nobody is working on this, and users who want to see this problem resolved should feel highly encouraged to put in the work to resolve it. |
Hmm, I was just looking at this again and wanted to follow up on my original intent, but it seems this commit got introduced in the latest RC already (1da059c), @dscho? Does it mean nothing to do or will you still need some kind of test case? Edit: my bad. I read the Github output wrong. The actual repo shows it's not merged. |
The problem here is that I use "merging-rebases", i.e. whenever I rebase Git for Windows' patches, I start by a fake merge ( So yes, the commit would be reachable, but by virtue of the latest |
Hey project members, just some observations I made while trying to get started now. It should be stated more clearly on which branch one is supposed to base contributions. The CONTRIBUTING.md isn't explicit in that regard. One can only assume that I am taking notes for myself right now and will see where they fit into the official project Wiki once I have delivered something. Anyway, regarding the actual topic at hand (blocking inside For the record the two stack traces for the "client" and "server" processes respectively in the case of blocking: Parent
Child
I remember having had this problem with pipes myself in the past and I'll try to consult with a friend who also had the very same problem in conjunction with some proprietary software in times of Windows XP. Several publicly available tools, e.g. from Microsoft but also others, dodge this bullet by employing a driver of their own. Not really practical for Git, I'll admit. Thinking of XP, what's the lowest version of Windows on which Git for Windows is supposed to run? I'm asking because the All that said, the first move I want to make, though, is to fix the symptom (again), which the sideband configuration option allowed until recently. |
That's a good observation. Indeed, our documentation can be improved. The contributions should generally come in via PRs relative to Having said that, I have fixed PRs that targeted inconvenient/incorrect branches in the past, as long as the contributors checked the "Allow maintainers to edit the PR" checkbox (or whatever the exact title of that checkbox is).
This is covered by our FAQ (which is linked from https://gitforwindows.org as well as in each release notes that are shown by default when you install/upgrade Git for Windows):
While it does not state it specifically (please feel free to improve the FAQ in that respect), https://gitforwindows.org/requirements.html (which the installer will link to when it refuses to install Git for Windows on XP or earlier Windows versions) does say that Windows Vista or later is required.
That sounds sensible, and if the |
Let's just close this as stale. |
The release notes (https://github.com/git-for-windows/build-extra/blob/main/ReleaseNotes.md) still refer to this issue with an "until this is addressed..." sort of comment. Should they be updated? |
Good idea. Would you be so kind to open a PR? |
I can modify the release notes, but it seems kinda poor to say "X may hang, set your config this way". Seems like either the default config should be set that way to begin with, or we should explain what the tradeoff is that leads to that not being true, or this bug should still be open and available (and clear as to what the next steps are) and the notes should basically say "until someone looks into X". |
I agree that it is not the most satisfying thing to say "X may hange, set your config this way" instead of fixing the underlying bug, but given the way the conversation with upstream Git went, I cannot fault anybody who no longer wants to work on this. |
Not implying you (or anyone else) is obligated to work on this. Just trying to figure out what the actual status is and how to word things. AFAICT it is:
Is this accurate? Sorry for any misunderstandings, I was skimming, and I didn't bother to research the actual setting here. If it is accurate, perhaps the right thing is to leave this particular bug open and unassigned, with a clear title and comment explaining the necessary next steps. The other possibility is that the relevant setting here gets toggled to the other state, but I assume that's undesirable. |
As far as I can tell: yes!
The reason for the current default to leave the side-band on is: For any non- Turning off side-band works around the bug, at the hefty price that remote error messages are either shown late or not at all.
I made it a practice to close tickets that nobody is working on. This was pretty much the only healthy option when there was an overwhelming number of open tickets and the wide-spread expectation that "someone" would work on them eventually, yet nobody ever did. This practice works well enough for me, better than the alternative at any rate. If you want to work on this, it is easy enough to open a PR (potentially as draft, or with the title clearly marked as "[DO-NOT-MERGE-YET]") with the latest iteration of the patches that were sent to the Git mailing list. I am comfortable with long-running PRs that are kept open to work on the topic as time allows, in contrast to leaving tickets open that are forgotten except by people like me who try to look at the open tickets from time to time to see which ones have been addressed already and can be closed and are then overwhelmed. |
OK, fair. I do not want to work on it, but now I know enough that I think I can clarify the release notes. |
or closed issue
matching what I'm seeing
There appears to be some bug when pushing to git:// protocol for repositories. I believe this is a carryover from msys-git, but no one has logged a bug in the new system. This URL ( http://pete.akeo.ie/2011/07/git-remote-repository.html ) refers to the bug, and said it was bug 457 in the old system. However, the page that it references is now gone now that you all have moved to github.
I searched this issue tracker for the issue but was unable to find it. Anyway, the report is below. I am working around the issue by pushing to a Mac laptop that can then push to the server.
Setup
2.10.1.windows.1 64-bit
Windows 10 64-bit
defaults?
defaults
Any other interesting things about your environment that might be related
to the issue you're seeing?
None - just did a fresh install to be sure
Details
Which terminal/shell are you running Git from? e.g Bash/CMD/PowerShell/other
CMD I believe, but I'm used to UNIX-y environments so I'm a bit out of sorts.
What commands did you run to trigger this issue? If you can provide a
Minimal, Complete, and Verifiable example
this will help us understand the issue.
What did you expect to occur after running these commands?
I expected it to push
What actually happened instead?
It gets stuck "Writing Objects". Depending on the particular push, it may get a different percentage of the way done.
If the problem was occurring with a specific repository, can you provide the
URL to that repository to help us with testing?
It is an internal repository of a client of mine, so no.
The text was updated successfully, but these errors were encountered: