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 or Gist workflow for Pythonista
-
@ccc , thanks a lot. Works flawlessly for me.
-
@ccc It looks nice. Just checking to see that I've understood this... It is a way to check out the files from a git repo into Pythonista. And Working Copy itself can keep the files in sync between iOS devices. But getting changes of the files out of Pythonista is not covered by this solution. Do you copy-paste the changes into Working Copy manually?
How do you use it yourself?
-
So far all that I have is
read_from_working_copy.py
which is one-way: Working Copy --> PythonistaYes, Working Copy could use Handoff to keep its repos on multiple iOS devices in sync with each other
I have not yet figured out how to deliverI am open to ideas and Pull Requests.write_to_working_copy.py
to go the other way: Pythonista --> Working Copy.https://github.com/omz/Pythonista-Issues/issues/98 Would help to close this loop.
-
@Oscar I figured out the "save to Working Copy" piece too... It is actually builtin! At least on a single file basis (e.g. not a whole folder all at once).
- Open the file of interest in the Pythonista editor
- Click the wrench icon at the upper right
- Click the "Share..." button
- Click "Save in Working Copy" button
- Select the repo that you want to save the file into
- Click "Save As..."
- Change the filename if you want to and click "Save As..." again
- Click "Just Save" if you want to bundle multiple files into a single commit --or-- Type your commit message and click "Commit"
Now we have an end to end workflow: GitHub --> Working Copy --> Pythonista --> Working Copy --> GitHub
-
@ccc , do you think it would be possible to go one step closer.
Iterate though all the files in the directory asking the user for each file if they wants to send the file to working copy. Then have the share sheet present itself for each file you want to save, from there you take over and do all the work in the share sheet manually.Then it would be possible to enhance the script to flag files to always ignore, keep a log of files that have been (supposedly) sent back to working copy with info on date and time etc, alert you that a file is new and be beet sent to working copy etc.
I have done next to zero with share sheets, that's why I ask.
I think this would be a fantastic addition, especially if you have a. Number of files in different directories. You can be sure you made a decision about each file.
Anyway....it's fantastic news, it's very exciting. I can start to see the light at the end of the tunnel about the possibility of collaborating with someone via a repo π±π±π±π±
A big thank you @ccc
-
Thx @Phuket2 I added Pythonista-Issues #121 and #98 to try to get us closer to the vision you set out above.
I think that security concerns prevent you from programmatically invoking Share without human intervention.
However, Working Copy does have a very rich x-callback-url vocabulary so I am sure that more complicate things are possible on that side of the divide.
-
@ccc , ok great. Not sure if you have seen this behavior or not.
I copied a repo into wc, then used your script to copy the repo to Pythonista. All good.
Then I added a new file with a commit. Github is not updated. Then I tried an overwrite. All looking good in wc, but Github still not showing the new file. Then same file again, I just did a save from Pythonista to wc, thinking that when I went to wc it would let me know that I was ahead of the repo. But it does not. But all the changes I do from Pythonista are reflected correctly in wc.But ok, then I do a hard restart on wc, and it tells me I am 3 ahead of the repo. Then I can push. The Github repo is updated.
It's not a super big deal. I just tried to explain it here in case others get the same problem. So it's all working, but seems to be some refresh issues in wc.
-
@ywangd said:
A few things to note for your script:
- The GitHub repo address must have an ending
.git
, i.e.https://github.com/Phuket2/Pythonista.git
.
Why is this? Git on desktop doesn't need need thisβ¦
- The GitHub repo address must have an ending
-
@Webmaster4o said:
@ywangd said:
A few things to note for your script:
- The GitHub repo address must have an ending
.git
, i.e.https://github.com/Phuket2/Pythonista.git
.
Why is this? Git on desktop doesn't need need thisβ¦
Because no one has put in a pull request :)
The HTML and ssh protocol do require this, however git for desktop must detect and corrrect this common mistake. - The GitHub repo address must have an ending
-
@ccc, the appex script seems to be broken. I am pretty sure must be due to working copy update. A bunch of file errors. I didn't post them because it's happening on all the repositorys that worked before. I know I haven't changed anything and it doesn't appear the script has changed.
-
@ccc I've not been able to get the script working. This is the end of the traceback:
with open(src, 'rb') as fsrc:
IsADirectoryError: [Errno 21] Is a directory: '/var/mobile/Containers/Shared/AppGroup/379D48B7-C511-4AF4-80DD-2A91B9CD9D2A/File Provider Storage/Pythonista-and-Working-Copy'I'm not an experienced Pythonista user though, so I might have installed the script incorrectly. I added it as a URL extension, is that correct? Do we need to put anything in the Arguments field in the Pythonista extension editor? Could someone describe the correct way to install the script?
-
https://github.com/cclauss/Pythonista-and-Working-Copy Is now working again with the latest version of the Working Copy app. Thanks @Phuket2 and @Utsira for the heads up that it was broken.
-
@ccc , really thanks. Just updated. Working again... But makes life a lot easier. ππππ
-
@ccc I've updated to the latest version of the script. This time I'm seeing a different error. I'm trying to send a
.py
file from Working Copy to Pythonista. Here's the traceback:Traceback (most recent call last):
File "/private/var/mobile/Containers/Shared/AppGroup/FAB03D8A-5598-46CF-A26A-B76EE628E876/Pythonista3/Documents/read_from_working_copy_app.py", line 6, in <module>
import appex, editor, os, shutil
File "/var/containers/Bundle/Application/AE76B4C7-AEC5-4858-9A87-3F2F77424054/Pythonista3.app/Frameworks/PythonistaKit3.framework/pylib/site-packages/editor.py", line 5, in <module>
raise NotImplementedError('Not available in app extension')
NotImplementedError: Not available in app extension -
Sorry @Utsira ... I rolled back the last commit. Please try again.
-
@MartinPacker as we discussed, you can download a repo directly from GitHub and unpack it into Pythonista in 10 lines of Python.
This version does not require Working Copy... https://github.com/cclauss/Ten-lines-or-less/blob/master/read_zipfile_from_github.py
-
@ccc I was wondering if there was a Pythonista 2 version of this script somewhere?
-
Hi,
It appears that the script is broken when I try to import a repository to pythonista (latest version).
It was working some 3/4 weeks ago. Don't know why it has stopped working. I noticed that working copy has been updated in February.Here is the error:
Traceback (most recent call last): File "/private/var/mobile/Containers/Shared/AppGroup/B6AB638B-3B3D-4649-85A1-8E5C6F750259/Pythonista3/Documents/read_from_working_copy_app.py", line 35, in <module> main() File "/private/var/mobile/Containers/Shared/AppGroup/B6AB638B-3B3D-4649-85A1-8E5C6F750259/Pythonista3/Documents/read_from_working_copy_app.py", line 25, in main print(shutil.copy2(srce_path, dest_path)) File "/var/containers/Bundle/Application/7D651543-38E6-46C5-966F-4EEBA2F1A6CC/Pythonista3.app/Frameworks/Py3Kit.framework/pylib/shutil.py", line 253, in copy2 copyfile(src, dst, follow_symlinks=follow_symlinks) File "/var/containers/Bundle/Application/7D651543-38E6-46C5-966F-4EEBA2F1A6CC/Pythonista3.app/Frameworks/Py3Kit.framework/pylib/shutil.py", line 100, in copyfile raise SameFileError("{!r} and {!r} are the same file".format(src, dst)) shutil.SameFileError: '/private/var/mobile/Containers/Data/Application/D82E20BF-DAFE-4D17-AA00-9E6B99A79A39/tmp/Pythonista-and-Working-Copy.zip' and '/private/var/mobile/Containers/Data/Application/D82E20BF-DAFE-4D17-AA00-9E6B99A79A39/tmp/Pythonista-and-Working-Copy.zip' are the same file
It works fine with single files.
Can anyone help me please?Thanks in advance,
David -
The last line of the error message seems to indicate that you are trying to copy a file onto itself.
shutil.SameFileError: 'x' and 'x' are the same file
-
Very strange.
Have you tried to import a repository recently? Does this error happens to you?