Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
git clone ssh failing
-
May be you can get workingcopy and use @ccc's scripts to sync with pythonista.
https://github.com/cclauss/Pythonista-and-Working-Copy -
Thanks, @abcabc. Yes, I have Working Copy successfully cloning as I mentioned earlier. However, I'd like to see if I can get dulwich working properly, since it would be much more convenient for me.
Jelmer says that the TypeError is a known issue with Python 3, and that it is in the bug tracker. So, I may be stuck for now.
-
Use the python 2 interpreter -- either prepend the script with #!python2, or long press and select run with 2.7.
-
@JonB, I get the same TypeError with Python 2 or 3. However, if I run the Python 2 script from the command line, I get the following:
stash: <type 'exceptions.OSError'>: [Errno 1] Operation not permitted
Traceback (most recent call last):
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/stash/system/shruntime.py", line 490, in exec_py_file
execfile(file_path, namespace, namespace)
File "test.py", line 6, in <module>
dulwich.porcelain.clone('ssh://user@git.myCompany.com/MyRepository.git')
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/porcelain.py", line 258, in clone
progress=errstream.write)
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/client.py", line 251, in fetch
def abort():
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/client.py", line 557, in fetch_packFile "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/client.py", line 921, in _connect
raise TypeError(path)
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/client.py", line 877, in run_command
if port is not None:
File "/var/containers/Bundle/Application/297756CD-F73E-44E6-AB25-42E99062FE48/Pythonista3.app/Frameworks/PythonistaKit.framework/pylib/subprocess.py", line 711, in init
errread, errwrite)
File "/var/containers/Bundle/Application/297756CD-F73E-44E6-AB25-42E99062FE48/Pythonista3.app/Frameworks/PythonistaKit.framework/pylib/subprocess.py", line 1205, in _execute_child
self.pid = os.fork()
OSError: [Errno 1] Operation not permitted -
Sorry, should have mentioned, after importing dulwich.client, you need to use
dulwich.client.get_ssh_vendor = dulwich.client.ParamikoSSHVendor
which tells dulwich to use paramiko instead of using the built in ssh
-
Thanks, @JonB. Sorry, I thought I had already done that. OK, now that I have that back in there, I'm getting the same dulwich.errors.HangupException as I started with.
Any other ideas for figuring out what's happening?
-
Can you find out what your company uses for a server?
Let's try going a little lower level, so we can add some logging:
https://gist.github.com/e60abaa38bd5685637e758175d7f2bdareplace
source
with your info.
check the resulting paramikolog.txt for any errors that might indicate a auth error, or other connection error.In the info printed to stdout , verify that you can see the refs from the server, and see if any are successfully downloaded. (you will see a message about Counting Objects done). if so, keep running the script, and figure out which ref is causing issues.
If the first one fails, you might try changing the determine_wants to request a different ref.
Or, is your work repo using submodules? Those are not supported in the dulwich we are using, though there seems to be some pull reqs on this recently.
j
-
Thanks for your continued help, @JonB.
With your script, I don't get a paramikolog.txt at all. Just the same HangupException.
Our company server reports:
Ubuntu 12.04.5 LTS (GNU/Linux 3.13.0-100-generic x86_64)
git version 1.7.9.5I don't believe we use submodules. How do I tell?
-
Do you get any printout from the script? I am surprised you don't get any list of refs...
Perhaps also change the paramikolog.txt to os.path.expanduser('~/Documents/paramikolog.txt')
-
When I run the script with your source, it creates a paramikolog.txt file just fine. But when I use my source, apparently there's nothing to write because the file is never created. And no other output on the command line. All I get is a dulwichtests/.git folder with initialized files and folders.
-
That is surprising, because at a minimum, you should get a "logging started" message which is logged right off the bat by my script.
Then you should see some startup stuff, and the authentication negotiation..
-
Can you post a full traceback of your hangup error?
-
stash: <class 'dulwich.errors.HangupException'>: The remote server unexpectedly closed the connection.
Traceback (most recent call last):
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/stash/system/shruntime.py", line 490, in exec_py_file
execfile(file_path, namespace, namespace)
File "test_dulwich_ssh.py", line 60, in <module>
fetch_one()
File "test_dulwich_ssh.py", line 58, in fetch_one
progress=sys.stdout.write)
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/client.py", line 251, in fetch
progress)
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/client.py", line 559, in fetch_pack
refs, server_capabilities = read_pkt_refs(proto)
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/client.py", line 168, in read_pkt_refs
for pkt in proto.read_pkt_seq():
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/protocol.py", line 201, in read_pkt_seq
pkt = self.read_pkt_line()
File "/private/var/mobile/Containers/Shared/AppGroup/E35AE39A-48FB-44A1-BC2A-EE57EF6EAA4D/Pythonista3/Documents/site-packages/dulwich/protocol.py", line 152, in read_pkt_line
raise HangupException()
HangupException: The remote server unexpectedly closed the connection. -
Can you exit/restart pythonista, then run the script directly(no stash)?
Incidentally, i can reproduce this error if I type in an incorrect repo path. Are you SURE you have the full and proper path? i.e if i change uicomponents to uicomponent, i get thto same error as you.
Try adding this right after the get_transport line, around 34:
proto, can_read = client._connect(b'upload-pack', host_path) import time time.sleep(1.0) okay_to_read=can_read() while okay_to_read: line=proto.read_pkt_line() if line: line=line.replace('\x00','') print(line) okay_to_read=can_read()
-
Thanks for your additional help, @JonB.
I've been trying this URL:
'ssh://user@git.myCompany.com/git/MyRepository.git'
I did some trial and error with your test script, since can_read() was always false. I finally got it to work with an extra slash after the host name, like this:
'ssh://user@git.myCompany.com//git/MyRepository.git'
I've never had to do this with the regular git client. Do you know if there is a reason for requiring the extra slash? If not, I can report it as a bug.
Relieved to finally have it working, though. Thanks again for your patience and help!
-
how odd. I would report it as a dulwich issue. I suspect a true git client may do some "normalization" such as adding the .git at the end.
-
Will do. Thanks again.