omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    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

    Pythonista
    12
    47
    44681
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • thomasw
      thomasw last edited by

      Does anyone have a recommended Git or Gist workflow for Pythonista? I'm aware of the "send to gist" feature, but that doesn't support revisions.

      1 Reply Last reply Reply Quote 2
      • ccc
        ccc last edited by

        There are several interesting tools...

        • https://github.com/Pythonista-Tools/Pythonista-Tools/blob/master/GitHub Tools.md
        • https://forum.omz-software.com/topic/1848/working-copy-integration-sidebar
        • http://workingcopyapp.com

        ...but I have never seen a blog post where someone documents the best practices for how to use any of these tools to do a full GitHub lifecycle.

        A walk-through of the following steps would be a huge help to me:

        1. Use Working Copy clone an existing repo from GitHub
        2. Move one (or all) of the Python files from that local copy into Pythonista
        3. Make a change in one of those Python files
        4. Move the modified file from Pythonista back into Working Copy
        5. Push the change into the GitHub repo
            5a. A repo to which I have commit rights
            5b. As a "pull request" to a repo to which I do NOT have commit rights
        

        Steps 2, 4, and 5b are the ones that I have difficulty with and I am sure that my current approach is suboptimal ;-).

        marcus67 1 Reply Last reply Reply Quote 0
        • JonB
          JonB last edited by

          I have not used working copy, but my impression of the interface to pythonista was that it did not handle branching/merging/etc.

          Currently the best option for bi-direction git is the git command in stash. This does (as of march) include an improved set of tools like reset, branch, fetch, and merge, which allow more flexibility, though this is probably not well documented. I probably need to write a more comprehensive tutotial.

          I am in the process of a complete overhaul of gitview though it is not ready for prime time.

          gistcheck was once a viable system for managing gists of single files. I updated it for ios8 a while back, but honestly I don't use it so not sure if it works in the beta. Also, I seem to recall bookmarklets were crippled in some version of ios, which broke one of the main features of this approach.

          thomasw 1 Reply Last reply Reply Quote 0
          • Webmaster4o
            Webmaster4o last edited by

            Wow, working copy looks great, I want to look at that more. Didn't know about that. Searching the app store for "github" a few years ago, I came up with some pretty crappy apps. I was thinking of writing an automatic github sync with pythonista, which would be ideal because of the functionality with going back to previous versions. That'd be a great backup.

            It's a shame about apple's downloading code rule. It's not hard to copy/paste code from the same website you'd be downloading it from if you're willing to put in extra effort. I also don't know how they define 'code'. Workflows could certainly be considered executable code, and yet the gallery allows users to download code snippets. Maybe this isn't concerning to Apple because of the clear limitations of the app, but if they're going to ban the downloading of executable code, they should ban it, not make exceptions for some apps.

            I also think it'd make more sense for the rule to be modified to permit apps that only upload/download code written to the user, maybe even to a private server for that app. It'd be great to permit code syncs, just not downloading random code.

            It'd be a LOT better to let @omz write built in sync options.

            1 Reply Last reply Reply Quote 0
            • thomasw
              thomasw @JonB last edited by

              @JonB I just tried gistcheck and it appears not to work, perhaps because of the beta.

              1 Reply Last reply Reply Quote 0
              • Phuket2
                Phuket2 last edited by

                @ccc, I can not believe your comments here. I keep th9nking someone has some magic sauce I don't have. It's so frustrating because I know often is not all said here to make sure something stupid does not happen with you know who.
                Ccc you have asked me many times to share a project as a repo vrs a gist. Easy enough done, but it's the lifecycle where it all comes apart. I would love to close off my project now and share as a repo for collaboration, but how to update from Pythonista (I mean a button press, not copy and pasting all my files), then also downloading the latest branches or whatever you call them to Pythonista, then also to be able to go back to any branch in the project and restore that to Pythonista. To me this seems like it just should be all reasonable. But the rules or whatever seem to not publicly allow that.
                Ccc, I am not having a go at you. I am just venting my frustration. Somehow we are missing out on one of the most important things about python, collaboration! Drives me crazy
                @jonb , maybe stash is the way to go. I am sure I have tried with stash. Not saying it does not work, it I don't think it's for dummies like me.
                Jonb is it possible to run UI with stash? Just a thought to help simplify the cmd line interface. Eg, can you make a stash object, and call the cmd line from the object. For a powerful cmd line editor like stash, to have it operate as an object or faceless app, whatever the right word is could offer a lot of possibilities to simply chained cmd line directives. Look maybe I don't know what I am talking about. But I just know I wish I could do it easy and in predictable and reliable way, with the knowledge I will not lose data. Eg, stash could have an option to enter a Dropbox account or directory or another other account that it makes a back up or your working copy of files before any merge, pull request etc... Is done before any of the git cmds are executed.

                1 Reply Last reply Reply Quote 0
                • Webmaster4o
                  Webmaster4o last edited by

                  @Phuket2 The way I often put files in a github repo is to modify @omz 's pythonista-backup.py to host a single folder, and then download it on my Mac, and use github-desktop to upload it. This is a pain.

                  Phuket2 1 Reply Last reply Reply Quote 0
                  • Phuket2
                    Phuket2 @Webmaster4o last edited by

                    @Webmaster4o , yeah. But not only a pain, it's not controlled. Also if you are out and want to to a pull or push or take from a branch or whatever crazy thing you can do with Github, it's all about copy and pasting. Well as least as far as I know. But really copy and pasting into Github repo's must negate the whole concept of managed source code.
                    Again, I am not blaming anyone. I am just venting because I really find it frustrating. I would love a practical way here to collaborate with all the guys here on code, but one copy paste mistake, goes to hell. Also, maybe I want to update one line in a function, could be important. Then want to push it to the repo with a comment, should be a no brainer. Then if in 5mins later someone further refines my update, I should be just be able to update my local copy with a click.

                    Yeah, I go on and on. I would love to see this solved correctly. I know the people here have the skill to do it, but it's walking the fine line I guess

                    1 Reply Last reply Reply Quote 0
                    • Phuket2
                      Phuket2 last edited by

                      Another way is to make a Kickstarter project to buy Apple 😁

                      1 Reply Last reply Reply Quote 1
                      • Webmaster4o
                        Webmaster4o last edited by

                        Right. I'm a little upset about the $10 IAP for working copy push functionality, I'd be happy to pay maybe up to 5, but 10 is excessive.

                        1 Reply Last reply Reply Quote 0
                        • JonB
                          JonB last edited by

                          @Phuket2

                          i am not sure what a ui shell would look like :) Windows perhaps.

                          gitview was supposed to be the ui version of a git client. It works, if you are careful in your workflow. Because there is no merge, it is necessary before changing files locally, to pull, then change/commit locally, then push. Don't ever commit directly in github, such as updating readme, without then pulling back to your device. The ui is also probably fairly nonintuitive. I use this in combo with stash -- stash is used for anything complex, gitview is used for selecting which files to commit, and actually committing, and also the diff viewer is slightly more convienent.

                          I aim to improve the lack of fetch/merge with the next version of gitview, along with a vastly improved ui - a cleaner button bar menu, sliding subframes for branch or remote management, and integrated help).

                          Phuket2 2 Replies Last reply Reply Quote 0
                          • Phuket2
                            Phuket2 @JonB last edited by

                            @JonB , sorry I didn't explain the UI part correctly. But imagine you could create an object, mystash = stash.FacelessApp() from inside Pytonista. So you might have a mystash.exec() method, and the results being returned rather than going to std.io or console or whatever. That would enable others to write a UI using Pythonista around the cmd line interface of stash. I know I have given a very simplified English version here. In theory I have no idea how hard it would be to turn stash into a callable object , but it sounds interesting to me.

                            But look for me, I have have limited exp. with cmd line interfaces, especially in recent years. I am sure those who are comfortable with them are thinking what the hell is he going on about. But when you are not used to using cmd line , it sucks the life out of you. But that's just me.

                            But from what I see here, the least understood subjects are about backing up code, and gusts and repo's.

                            If I am not mistaken, people are scared to make something too powerful or comprehensive because of the possible ramifications.

                            Let's say it was not so political or sensitive, why would someone not just publish a simple guide to the life cycle as a keynote presentation for example.

                            Again, I am not blaming anyone. And maybe if I go back to stash I will understand it better now. But really, this would make my year, if I could easily work with a repo in a collaboration way with guys here.

                            1 Reply Last reply Reply Quote 0
                            • Tizzy
                              Tizzy last edited by

                              just chiming in with my particular source control workflow if anybody's curious I think it might be pretty unique.

                              1.) Dropbox sync for all scripts within Pythonista. I have the sync script linked to a launch center action so I can quickly run it from my home screen before/after any editing has taken place anywhere. (have to be meticulous and careful here)

                              2.) Individual project in it's own subfolder within dropbox folder, symlinked to from an xCode project on my Mac.

                              3.) xCode's source control from within xCode

                              Phuket2 1 Reply Last reply Reply Quote 0
                              • Phuket2
                                Phuket2 @Tizzy last edited by

                                @Tizzy , thanks for the info. Had some Dropbox syncing working before. After going to 1.6, I didn't reinstate it. I also didn't do a good job of automating it. I think I could do a better job now. At least I hope so.
                                I haven't tried an Xcode project yet. Scares the crap out of me. Will have to try it sometime.
                                If I am working on something and want a snapshot because I am about to refactor the code (which I have to do all the time, because I am hopeless 😱) I just use the 'share as gist'
                                I accept that there are ways to do,all this. But it's just not as simple as it should be. And as you point out, sometimes you have to be very diligent and careful.
                                I don't understand all the potential problems with storing scripts and or full projects in SQLite databases. It does not solve any problems relating to repo's etc. It could still be a interesting way to back up named/dated versions to a single file, so you only need to back up your sqlite db file. If I ever finish my resource manager, I will give it a go.
                                But again thanks for your comments, spurred some new thoughts for me

                                1 Reply Last reply Reply Quote 0
                                • Phuket2
                                  Phuket2 @JonB last edited by

                                  @JonB , oh sorry one more thing I neglected to be clear about. I didn't mean that the whole of stash to been turned into a GUI. Just saying if it was also a callable object that certain cmds could be wrapped up in a UI being powered by stash. I know it's a powerful tool. I would have thought even my powerful if could be called from inside a app.

                                  Anyway, I hope I haven't been offensive, was not my meaning. I am just frustrated about not being able to do it easily and properly (repo's that is). I also accept, that my lack of skill is also a big contributor to that.

                                  1 Reply Last reply Reply Quote 2
                                  • JonB
                                    JonB last edited by

                                    stash actually does include a callable object where other python scripts can run commands. So it is possible to write programs that include ui components, although there is sort of a console paradigm that tool authors have tried to honor.

                                    In re-installing stash, I have found that it does not seem to properly install gittle anymore in the beta, I suspect because of the changes to the sys.path. So, that needs to be fixed before git is really viable in stash.

                                    Phuket2 1 Reply Last reply Reply Quote 0
                                    • Phuket2
                                      Phuket2 @JonB last edited by

                                      @JonB , ok. When it's resolved I will try again. This time I will give it my all. I really want to get it working in a way I understand it.
                                      ThanksπŸ’‹

                                      1 Reply Last reply Reply Quote 0
                                      • ywangd
                                        ywangd last edited by

                                        Just read this thread. @Phuket2 stash object is callable since v0.3. So you can do something like from stash import stash; _stash = stash.StaSh(); _stash('Your_Command'). If a script is invoked from within stash, it can access the callable object without import, i.e. just do _stash('some_command').

                                        Phuket2 1 Reply Last reply Reply Quote 0
                                        • Phuket2
                                          Phuket2 @ywangd last edited by

                                          @ywangd , thanks. I was just trying it inside a script. Is it possible for the _stash(cmd) to do its normal output to the Pythonista console also?

                                          ywangd 1 Reply Last reply Reply Quote 0
                                          • ywangd
                                            ywangd @Phuket2 last edited by

                                            @Phuket2 Yes you can send output to the builtin console with _stash('some_command > &3'). The > character is a redirect operator in shell and &3 is the pointer to builtin console. Please note you need v0.6 for this to work. If you are on earlier version, please run selfupdate first and restart Pythonista.

                                            Phuket2 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors