Using Working Copy for Mobile Blogging2015-12-28
In my previous post on setting up Jekyll to publish to GitHub Pages, I mentioned some alternative ways to post content to a Jekyll blog. Since I’m using GitHub Pages and the Git version control system, things aren’t as simple as dealing with a file and directories on my monitor device. Or is it? This is where Working Copy for iOS comes in.
My Mobile Blogging Setup
I use the following tools when blogging from iOS:
- iPhone or iPad - I can use one or the other, or both, if I’m keeping content synchronized with the server.
- Working Copy - Used to manage my Git repositories on GitHub.
- Editorial - Has enhanced Markdown editing capabilities, a quick swipe to preview content mode, and other custom workflow capability using Python. Integrates with Working Copy via an installable workflow.
- Swype or a Bluetooth Keyboard - If I happen to have a Bluetooth keyboard, I’ll use it. Otherwise, Swype allows me to quickly type content with a finger or stylus.
While Editorial and a faster input method are certainly not required, they do speed up my ability to create content.
An Aside: Version Control Systems
Before we dive in too deep, is helpful to understand what a distributed version control system like Git is. Basically, think of GitHub as the master or authoritative source of your content.
clone a repository to your local machine, you can make modifications. But if you want the master repository to reflect these changes, you have to send those changes back. In Git terminology, you are
pushing changes back to the master repository.
Similarly, if you want to reflect changes pushed to your master repository from other devices, you need to
fetch those changes and
merge them into your local repository. This allows you to see any modifications and also merge differences you may have made to the same article on multiple devices.
Setting up Working Copy
Working Copy can work with multiple repositories. So if you have multiple blogs, you can edit and maintain them all. Setup is fairly simple:
- Authorize access to your GitHub account, if you haven’t already (a one-time action)
- Clone a repository
- There is no Step 3
Click the plus sign in the top right of the Repositories pane on the left side of the screen. Choose Clone Repository, select GitHub, then select the repository you’d like.
Now that you have a local copy of a repository, you can add or edit content. Navigate to the location you want to add content in the repository browser pane on the left and then click the plus button. You can create a new text file, import images, or add other files to your site.
- Create/edit content
- Commit changes
Once you’re ready to push your changes, simply swipe left on your repository and choose Commit. You’ll also notice an option to Fetch. It’s best practice to fetch remote changes before you commit your changes, so I would fetching/merging and then committing.
Synchronizing Changes Made Elsewhere
Oftentimes, you may have made changes elsewhere. Maybe your desktop or another mobile device. In these cases, you need to update your local copy. Swipe left on your repository and choose Fetch, then swipe left again and choose Merge.
Unless you have conflicting changes, everything will automatically “synchronize”. Once you’ve merged in remote changes to once fetched, your local repository is current.
A Concrete Example
This post was composed on an iPad. Screenshots were taken on the iPad, cleaned up using some editing tools, then optimized using Kraken.io. Images and the post were uploaded to GitHub via Working Copy.
Once I was satisfied with the draft, I renamed the file to include the date in the file name. This tells Jekyll that the post is no longer a draft and should be published.