In the 2017-10-18 post, “So Close, Yet an FTP Too Far?”, Direct Publishing and then Backup and Source-Code Management are identified as critical for proof-of-concept and subsequent refinement into production practices.
- Direct publishing is now working smoothly, with some scale issues remaining to reconcile beyond Reducing Countdown Holds. That’s a next-order problem.
- Source-Code Management and Preservation is in dismal shape. The first-choice solution impedes rapid maintenance and discourages easy authoring.
Blogging Collides with Web Deployment
There’s great appeal in the ancient Microsoft Site Server model for developing, deploying, and backing-up web sites. The nfoCentrale Web Deployment Pillars are centered on that model. It works well by virtue of integration between Microsoft Front Page, IIS with FrontPage extensions, and Visual Source Safe (VSS). VSS also makes it painless to have a staging mirror that can be synchronized with hosted web sites via FTP. In the nfoCentrale approach, the hosted-site carries static pages and all design-time operations happen with the FrontPage-IIS development server setup.
With node.js for static blog development and generation, the FTP synchronization has been made effortless. The VSS integration is a terrible bottleneck.
There are several pain points.
- The VSS client (top part of image) does not indicate whether the working folder has files that have not ever been checked in.
- The checked-in files are set to read-only in the working folder.
- That a file is checked out (red check mark in the top view) does not mean it has changed, only that it is checked out.
- The File Explorer view (lower part of image) reveals nothing about the VSS status of the files.
The coordination between the file folders and VSS requires too much attention in this situation. Also, it is annoying to start to edit a page and learn it is read-only and the VSS client must be opened and the page checked-out. When inspired to spontaneously initiate and test new posts, diversions to check material in and out tend to be neglected, avoiding the distraction.
Superiority of Git Support
Even for solo development usage, Git support carries the day.
There are several advantages from switching to Git for the hexo-authoring use case.
- The GitHub desktop client for Windows supports any Git clone on the desktop, whether the origin is on GitHub or not.
- The (clone) working-folder files are not locked and can be edited any time.
- On checking for source-code changes to preserve, the GitHub client provides an easy identification of changed and new files, allowing them to be selectively committed with appropriate commit messages.
- With TortoiseGit installed, the Windows file explorer (shown in the inset) identifies the committed, changed, and new status on each non-ignored file. The change/current status is reflected up the file-folder hierarchy of the clone.
That Hexo and hexo-installable themes/plugins are all developed on GitHub creates a challenge. That means parts of an authoring folder
- will be cloned from forks of different GitHub repositories
- will preserve any customizations in my own forks
- will have changes to the originals cherry-picked into the customized code as appropriate
- will be integrated into Git and GitHub in a manner that avoids update-collision/-conflict nightmares
There is some nervousness around this. Inspiration will be taken from suggestions of John Stevenson’s account of his customization of a hexo-generated blog, including alignment of theme integration.
Steady As We Go
For this change, I will check everything out of VSS, then conduct the Git-integration ceremonies. If all goes well, I can provide some precautionary VSS tracking by check-in with files kept checked out or (eventually) deleting the VSS project.
This contingency situation is precisely why I preserve version history in managed files themselves, so that change information outlives presence under a particular source-control system and survives when the files are encountered by other means. The VSS history will not travel to Git, but the annotations in the files will.