{ "info": { "author": "Josh VanderLinden", "author_email": "codekoala@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: Education", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Topic :: Documentation", "Topic :: Text Processing", "Topic :: Utilities" ], "description": ".. -*- restructuredtext -*-\n\n=============\nHgBlog Readme\n=============\n\nHgBlog is a set of modifications to the Sphinx project to make it slightly more\nsuitable as a blogging engine. It's built for those of us who love using\nreStructuredText markup to write documents.\n\n.. note:: HgBlog assumes a level of familiarity with RST and Mercurial. You\n can certainly use and enjoy using HgBlog if you've never used either one\n of them. I recommend reviewing a `tutorial for Mercurial `_\n if you've never used it or are unfamiliar with how Mercurial affects your\n life.\n\nThe quickstart wizard handles setting up an HgBlog for you. This includes all\nof the usual things that the Sphinx quickstart utility does, but it creates a\nMercurial repository and installs a hook and intelligent ignores for you. The\nhook will automatically convert the ``.rst`` files that Mercurial is tracking\ninto HTML using Sphinx when you commit changes to the repository.\n\nAdditionally, when you pull changes in from a remote clone of the repository,\nthe hook will do the conversion just like when you commit locally. You can set\nthe hook up on remote clones as well. The hook *only* converts ``.rst`` files\nthat are tracked by Mercurial. This means you can work on new blog articles\nwithout committing them to the repository to have them not appear online.\n\nWhy?? Aren't There Enough Blog Engines Already?\n===============================================\n\nYes, there are. And most of them rely on databases that require regular\nmaintenance and backup. Databases can also slow down your blog. HgBlog offers\nyou a way to serve up your blog articles as static HTML without the overhead\nof requesting an object from a database, making it fit into a layout, etc.\nAny webserver should be perfectly capable of serving the content generated by\nHgBlog.\n\nI'm not saying there's anything wrong with database-backed blogs. I maintain\nmy own blog that is Django powered (and database-backed). It works fine for\nme. However, some people might not want to be confined to the rules imposed\nby a full-on blogging engine (whatever they may be). People have all sorts of\nreasons for doing things differently. Some people don't need a reason at all.\nIt boils down to what works for you.\n\nWhat does HgBlog offer you that *should* be attractive?\n\n* **Speed**. No need to deal with the formatting headaches of whatever\n WYSIWYG editor your blogging engine has dictated is the best. Just use\n reStructuredText markup (which is quite easy to learn if you've never used\n it before) and let Sphinx worry about formatting it.\n* **Consistency**. Again, reStructuredText is a very simple format that will\n produce consistent, nicely-formatted documents.\n* **Portability**. Since HgBlog generates static HTML, you can put it on any\n server. In fact, you don't even need any server software--just a web\n browser. Also, Sphinx allows you to export your articles in several formats:\n\n * HTML, multiple files\n * HTML, single file\n * epub\n * LaTeX\n * LaTeX PDF\n * Plain text\n * man pages\n\n With other tools, you can even turn your ``.rst`` files into PDF or ODT\n documents.\n* **Redundancy**. Since every article you want to have on your blog must be\n checked into Mercurial, a `distributed version control system `_.\n This means that you can easily clone your blog to another system, which is\n a very fast and effective way to backup your articles. If the primary\n \"server\" for your blog ever dies, you are likely to have at least one full,\n up-to-date backup of your blog if you're using Mercurial as it's designed.\n\nPossible Workflows\n==================\n\n* You have a server which offers Python and SSH access, and you're allowed to\n install your own software within your home directory (or you have full root\n access to install elsewhere). Run the quickstart utility on your server,\n clone the repository onto your local machine, write articles, commit them,\n push them up to your server. When you're ready for those articles to appear\n online, simply run ``hg up`` on the repository on your server. Make sure your\n webserver software is configured to serve static content from your ``build/html``\n directory.\n* Use HgBlog to produce your own, personal wiki. Keep notes on things you do at\n work or projects you're currently working on.\n* Don't have a server that supports ASP, PHP, Ruby, Python, or whatever\n language you prefer? Use HgBlog to compose your articles locally, commit\n changes to the ``.rst`` files, and use an FTP program to upload the HTML\n files to your hosting provider.\n\nRequirements\n============\n\nI've developed and tested HgBlog using Linux, Python 2.6.4, Mercurial 1.5.1,\nSphinx 1.0-pre, docutils 0.6, Jinja2 2.4.1, and Pygments 1.3.1. However,\nSphinx suggests the following version requirements. I'm just being safe with\nmy requirement on Mercurial's version.\n\n* Python 2.4+\n* docutils 0.4+\n* Jinja2 2.2+\n* Pygments 0.8+\n* Mercurial 1.5+\n\nInstallation\n============\n\nThere are several ways to install HgBlog:\n\n* Using ``pip`` (recommended)::\n\n pip install -U hgblog\n\n* Using ``easy_install``::\n\n easy_install hgblog\n\n* From the CheeseShop\n\n * Download the ``.tar.gz`` file from `PyPI `_\n * Extract the ``.tar.gz`` file\n * Run ``python setup.py install`` using the ``setup.py`` in the extracted directory\n\n* Using Mercurial::\n\n hg qclone http://bitbucket.org/codekoala/hgblog\n cd hgblog\n hg qapply -a\n python setup.py install\n\nGetting Started\n===============\n\nHgBlog leverages the existing quickstart wizard for Sphinx projects. There\nare some modifications to reduce the number of steps required, so you should\nbe able to be up and running within a minute using::\n\n hgblog-quickstart\n\nAll you need to do is:\n\n* Provide the directory on your filesystem that shall be used for your blogging\n needs.\n* Provide a name for your blog\n* Provide your name\n* Select any extensions you may want to include in your blog\n\nOnce you do that, you should have a few new directories, one of which will be\ncalled ``source``. This is where you should write your ``.rst`` articles. When\nyou're done working on a particular article, you can use::\n\n hg add\n hg ci\n\n...to add and commit it to your Mercurial repository. At this point, Sphinx will\nbe asked to generate the HTML for your blog based on your ``.rst`` files.\n\nIf you feel like using Mercurial to clone your blog articles to another system,\nyou might be interested in adding to the new repository the same hooks that are\ninstalled by the quickstart utility. First off, this requires HgBlog to be\ninstalled on the other system. Next, edit the ``.hg/hgrc`` file for the new\nrepository::\n\n [hooks]\n update.hgblog = python:hgblog.generate_html.htmlize_articles\n commit.hgblog = python:hgblog.generate_html.htmlize_articles\n\nThese hooks make it so the HTML version of your pages will be generated each\ntime you commit changes to the local repository and each time you update your\nlocal repository using changesets pulled in from elsewhere.\n\nGenerating HTML Without Committing\n----------------------------------\n\nI realize that there are probably several times you might want to have a gander\nat the resulting HTML for your ``.rst`` files at some point before committing\nchanges to the repo. I've created a simple command to make this possible::\n\n hgblog-refresh\n\nYou should be able to call that from anywhere within your blog's Mercurial\nrepository, and your HTML files should be properly refreshed.\n\nTODOs\n=====\n\n* Add RSS feeds", "description_content_type": null, "docs_url": null, "download_url": "http://pypi.python.org/pypi/hgblog", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://bitbucket.org/codekoala/hgblog/", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "hgblog", "package_url": "https://pypi.org/project/hgblog/", "platform": "any", "project_url": "https://pypi.org/project/hgblog/", "project_urls": { "Download": "http://pypi.python.org/pypi/hgblog", "Homepage": "http://bitbucket.org/codekoala/hgblog/" }, "release_url": "https://pypi.org/project/hgblog/0.7.1/", "requires_dist": null, "requires_python": null, "summary": "Sphinx-based blogging engine", "version": "0.7.1" }, "last_serial": 792908, "releases": { "0.1adev-20100423": [ { "comment_text": "", "digests": { "md5": "438d18d269a5d2c1a8a13b894764af27", "sha256": "d684603b1092110677bc52876fd393b8bba4a9482d16b5143b0803b4dc55e2b8" }, "downloads": -1, "filename": "hgblog-0.1adev-20100423.tar.gz", "has_sig": false, "md5_digest": "438d18d269a5d2c1a8a13b894764af27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2207219, "upload_time": "2010-04-23T18:23:39", "url": "https://files.pythonhosted.org/packages/1f/08/0b4abb36ee2455bdc83732524efa1c66580727fd95fdeadc26e00c3cfcfa/hgblog-0.1adev-20100423.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "6598f8298139b0bfdc571c4713401be3", "sha256": "479264ca04f915156b38b2fba096c5068278fd98e5ecc7c8db559b9052918958" }, "downloads": -1, "filename": "hgblog-0.2.tar.gz", "has_sig": false, "md5_digest": "6598f8298139b0bfdc571c4713401be3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2276370, "upload_time": "2010-04-25T03:49:48", "url": "https://files.pythonhosted.org/packages/60/37/af7e57748eadb45f00cc4e76506b59b347ca49c3dac43ef4d37873e0878b/hgblog-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "af16eb1a7544c2a9dc9d499fd34a6085", "sha256": "9ad1b76da6a6211318ac664bfc6f8fe5624af9171284ce40ee13191d151fe765" }, "downloads": -1, "filename": "hgblog-0.3.tar.gz", "has_sig": false, "md5_digest": "af16eb1a7544c2a9dc9d499fd34a6085", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2277203, "upload_time": "2010-04-26T19:09:46", "url": "https://files.pythonhosted.org/packages/94/f5/d0ffef03a7eef8c6358b0b52fe1d537cecdcfe49f7462ceebb02dc70ce20/hgblog-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "e330fe47f87d96eff24492e4508342f3", "sha256": "fc75021d7f80ea7c20f05e6a4b82e8bba396f3e34c9f34325229f29f77ead6b3" }, "downloads": -1, "filename": "hgblog-0.3.1.tar.gz", "has_sig": false, "md5_digest": "e330fe47f87d96eff24492e4508342f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2277291, "upload_time": "2010-04-26T19:16:29", "url": "https://files.pythonhosted.org/packages/c7/21/4569b29cc1fecb8aa25d7727450a78eae91e1ab8252784e2a009006189fa/hgblog-0.3.1.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "51e19805d603746ac448312fa66c8013", "sha256": "5ecdce006295798cfab13d4fabc7ad904223d93b3cfad56401ec81c56c4bb8e5" }, "downloads": -1, "filename": "hgblog-0.4.tar.gz", "has_sig": false, "md5_digest": "51e19805d603746ac448312fa66c8013", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2277498, "upload_time": "2010-04-26T22:13:15", "url": "https://files.pythonhosted.org/packages/d2/09/27e3d5cfafae61f9ac1028802a60622eb089ff7b04f36df17533c99fb76c/hgblog-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "17e3ddf531331ceb9ef72708030c7085", "sha256": "8e6b37937937d0f9a1ca1fde0d30ccb84059738f5ed9992c5f239eebca028841" }, "downloads": -1, "filename": "hgblog-0.5.tar.gz", "has_sig": false, "md5_digest": "17e3ddf531331ceb9ef72708030c7085", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2320041, "upload_time": "2010-06-07T23:14:03", "url": "https://files.pythonhosted.org/packages/9e/a8/8ac2669e7229e282936ed500b363a9c0f3c547f05ad664c8abf7026c4d0e/hgblog-0.5.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "8d172d1587b3b4564031e15b80fde39c", "sha256": "a7f3c00905dc018091a1ee3ece4e091ea473638d00bab2ccd1dc4456b808baba" }, "downloads": -1, "filename": "hgblog-0.7.tar.gz", "has_sig": false, "md5_digest": "8d172d1587b3b4564031e15b80fde39c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2694239, "upload_time": "2011-09-30T20:06:55", "url": "https://files.pythonhosted.org/packages/21/6e/a5520868f40259343e58766a00570b2d92cb6dbfa0b04b8f1f0867b7ebca/hgblog-0.7.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "92d78d8089d6d023a969b3f8270e8c66", "sha256": "310c3e8b25b14402492d5515181d34cdb04bf0c2c6132b1e17488eba36960c1a" }, "downloads": -1, "filename": "hgblog-0.7.1.tar.gz", "has_sig": false, "md5_digest": "92d78d8089d6d023a969b3f8270e8c66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2694292, "upload_time": "2011-09-30T20:13:54", "url": "https://files.pythonhosted.org/packages/98/1a/74c2ff7a93511cda62948814a0a63e01109d70b1b4a5feadee0ed44c3508/hgblog-0.7.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "92d78d8089d6d023a969b3f8270e8c66", "sha256": "310c3e8b25b14402492d5515181d34cdb04bf0c2c6132b1e17488eba36960c1a" }, "downloads": -1, "filename": "hgblog-0.7.1.tar.gz", "has_sig": false, "md5_digest": "92d78d8089d6d023a969b3f8270e8c66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2694292, "upload_time": "2011-09-30T20:13:54", "url": "https://files.pythonhosted.org/packages/98/1a/74c2ff7a93511cda62948814a0a63e01109d70b1b4a5feadee0ed44c3508/hgblog-0.7.1.tar.gz" } ] }