{ "info": { "author": "Ethan Jucovy and Jeff Hammel", "author_email": "ejucovy@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "Svenweb is a web environment for editing and publishing versioned documents.\n\nIt uses a version-controlled repository as its database and works against a\ncheckout. Currently supported backends are SVN and BZR. BZR is better.\n\nQuickstart::\n\n virtualenv svenweb; cd svenweb; source bin/activate\n easy_install -e -b . svenweb\n easy_install bzr\n cd svenweb\n python setup.py develop\n bzr init /tmp/bzr\n paster serve paste.ini\n\nThe application will now be running on localhost:5052 \nagainst a new BZR repository in /tmp/bzr.\n\nNow navigate to a path to start editing a file there.\n\n\nWhat it doesn't do\n==================\n\nSvenweb doesn't care about authentication. If you do, you should configure\nthis outside of svenweb or in an additional WSGI middleware layer.\n\nLikewise svenweb doesn't respect authentication. Commits will all be made\nby the system's default user. In a future version this will change to respect\nenvironment variables.\n\nSvenweb doesn't provide in-browser diffs between revisions. I'd like to add\nthis eventually.\n\nSvenweb doesn't provide RSS for changes. It should.\n\nSvenweb doesn't provide facilities for moving, copying or deleting files\nthrough the web. Adding these will likely be my next priority.\n\n\nUsage\n=====\n\nSvenweb uses a wiki-style workflow for adding new documents: just visit\nthe URL of the document you want to create. You'll find an edit form.\n\nIf you visit /baz/bar/foo/ then the directories /baz/ and /baz/bar/ will\nbe created and checked in to the repository if they do not yet exist.\n\nSvenweb aggressively redirects redundant versions of all its views:\n\n* If a document /foo was last changed in r5 and you visit /foo?version=8,\n you will be redirected to /foo?version=5.\n\n* If /foo's last change was in r5 and you visit /foo you will be redirected\n to /foo?version=5.\n\nThis means that every URL with a ?version parameter can be cached forever\nif you want.\n\nRead\n----\n\nVisit a document's URL to view its latest version.\n\nAppend ?version=5 to view it as of r5.\n\nWrite\n-----\n\nVisit /foo?view=edit to edit the document stored at /foo.\n\nYou can edit the file, and also set a mimetype which will be used when \nserving the file.\n\nYou can also add a commit message. If you don't, the default commit message\nis \"foom.\"\n\nIndex\n-----\n\nYou can view the contents of a directory by visiting the directory's URL.\nVersions work here too; visiting directory /baz/bar/?version=5 will display\nthe contents of that directory as of r5.\n\nHistory\n-------\n\nYou can view a history (changelog) for any file or directory's URL by using\nthe querystring ?view=history.\n\nFor directories, this will display the history of changes within that directory,\nincluding file additions and modifications in subdirectories.\n\nYou can use ?version=5 modifiers as well, to see a history of changes up through\nthe version specified.\n\n\nMiscellany\n==========\n\nTests\n-----\n\nThere are the beginnings of a test suite in the ./ftests directory. These are\nflunc tests, which run twill scripts over HTTP. You should `easy_install flunc`\nif you want to run the tests.\n\nTo run them, start a svenweb server on localhost:5052 with\n svenweb.checkout_dir = /tmp/svnco/\n\nThen run \n ./run-flunc.sh \n\nIt should work with both the SVN and BZR backends.\n\n\nTemplates\n---------\n\nThe templates are Tempita templates. They are minimal by design. You can fork\nthem; just change the value of `svenweb.templates_dir` in the `paste.ini` file.\n\n\nUsing bazaar\n------------\n\nTo use the BZR backend you should be running bzr 2.0 or so. This is for the \"index\"\nview specifically i.e. for directory views. In 2.0 bzr makes it easier to find the\nlast changed revision of any file within a directory. \n\nSee https://bugs.edge.launchpad.net/bzr/+bug/97715\n\nNote that svenweb's current implementation of the index view WILL NOT WORK\nwith mod_wsgi because of a call to sys.stdout.flush() in bzrlib.commands\nwhich is triggered by sven.bzr.log -- I really ought to fix this in sven.bzr\nby implementing the `log` method more properly, somehow.\n\n\nChangelog\n=========\n\nNew in this version\n-------------------\n\n * Remove various imports that cause ImportErrors unless pysvn libs / bzr libs / hbmp are installed\n\n * Add flunc tests\n\n * Backtracking on mimetype, moving towards generic metadata \n\n * 404 (instead of 500) when visiting a document at a revision past \n the repo HEAD. The response body contains a link to the document\n at the repo HEAD.\n\n * 404 (instead of 500) when visiting a document at a revision prior\n to that document's birth. The response body contains a link to\n the document at the revision of its birth.\n\n\nWhat's next\n-----------\n\n\nA little speculative roadmap:\n\nN: This version.\n\nN+1: Copying, moving and deleting files. Some refactoring of WSGI components.\n\nN+2: Using REMOTE_USER to determine the username to commit with, or something\n like that. More refactoring of WSGI components.\n\nN+3: RSS or atom feeds. Diffs between arbitrary revisions. More refactoring.\n\n\nHistory\n-------\n\n0.5 (2010-02-16)\n----------------\n\n * Fixed several bugs in link generation (index pages, redirects after save) which\n had been incorrect when svenweb was not mounted at the root of the URL space.\n\n * Refactoring and cleanup.\n\n\n0.4.1 (2010-01-30)\n------------------\n\n * Better hbmp handling\n\n\n0.4 (2010-01-30)\n----------------\n\n * Fix mimetype handling which seems to have been really quite broken\n for god knows how long. It now all behaves as you'd expect.\n\n * Abstract out template_loader option, which should be a callable\n which takes a (template_name, data_dict) and returns a string.\n The default is the existing Tempita stuff. This interface will\n probably change. It can be an object configured however it likes,\n currently that's just handled in the paste.deploy factory.\n\n * Internal refactoring of components for easier pluggability of\n custom edit apps (which handle editform, addform and save) and\n view apps (which handle rendering)\n\n Demo of custom view apps: custom display for text/csv+hbmp format!\n\n\n0.3 (2010-01-30)\n----------------\n\n * When displaying an edit form for a file that does not exist,\n use the return value of mimetypes.guess_type as the default\n mimetype for the file in the form. If no guessable mimetype\n is found, the default is 'text/html'.\n\n This behavior can be overridden by subclassing SvnWikiView\n and implementing a custom `new_file_default_mimetype_policy`\n method. The method should take a `request` argument.\n\n\n0.2 (2010-01-26)\n----------------\n\n * BZR repositories are now supported. This is much faster than\n SVN. To use, simply add 'svenweb.repo_type=bzr' to your\n paste.deploy configuration.\n\n * Added a WSGI middleware filter to set a response's Content-type\n header based on the versioned mimetype property of a resource.\n It can be used independent of the rest of svenweb, for example\n if you want to publish the current contents of your versioned\n resources with a static file server. Use like\n\n [filter:contenttype]\n use = egg:svenweb#content_type\n checkout_dir = /path/to_your/checkout/\n default_content_type = text/plain\n repo_type = bzr\n\n The 'repo_type' and 'default_content_type' settings are optional.\n\n\n0.1.1 (2010-01-03)\n------------------\n\nFirst release.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": null, "license": "GPLv3 or later", "maintainer": null, "maintainer_email": null, "name": "svenweb", "package_url": "https://pypi.org/project/svenweb/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/svenweb/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/svenweb/0.6/", "requires_dist": null, "requires_python": null, "summary": "web frontend to versioncontrolled document repository for read-write-index-history operations", "version": "0.6" }, "last_serial": 800272, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "8fa2a85a3348df0b057ead1bd9e7e5b4", "sha256": "f9639e6c65d68939023947ffcb80a5b676ab9c3513e99d3545a55c57a8c2d960" }, "downloads": -1, "filename": "svenweb-0.1.tar.gz", "has_sig": false, "md5_digest": "8fa2a85a3348df0b057ead1bd9e7e5b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7358, "upload_time": "2009-12-29T20:16:05", "url": "https://files.pythonhosted.org/packages/0a/b2/85e64e29294f70e9a80a3f551d4a2acd3d7fc93c03f3869d87a6a554c08b/svenweb-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "fe718df99d34e7b028813ab41e111c36", "sha256": "f35deec4cd2144c10adcb1a65b1702d2fc2b17fc2867d47db5576c267f2b6a01" }, "downloads": -1, "filename": "svenweb-0.1.1.tar.gz", "has_sig": false, "md5_digest": "fe718df99d34e7b028813ab41e111c36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9426, "upload_time": "2010-01-03T01:40:22", "url": "https://files.pythonhosted.org/packages/1a/e1/d7796da2a98c707059d6f0337ebef6d2a69ca4be34fd0b907d1b111d5a7d/svenweb-0.1.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "f98e61914d453df089d92648c7debdd7", "sha256": "ce4722df374d6562f57ab961b5c71a19261671d621d4c0370d92e8c31d662e6b" }, "downloads": -1, "filename": "svenweb-0.2.tar.gz", "has_sig": false, "md5_digest": "f98e61914d453df089d92648c7debdd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9356, "upload_time": "2010-01-26T22:44:30", "url": "https://files.pythonhosted.org/packages/e3/ee/1ea91fcff0b3d37f5d3f532b0d0964ab36a85bac4ac11a686edcb035d764/svenweb-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "3eafaad500c715cf93c2c43730b17e30", "sha256": "7bbf7826d6c4674aabc1ec1fc0836bbddc1d07bb7f199326a9dd94a161af4fd1" }, "downloads": -1, "filename": "svenweb-0.3.tar.gz", "has_sig": false, "md5_digest": "3eafaad500c715cf93c2c43730b17e30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11379, "upload_time": "2010-01-31T02:52:35", "url": "https://files.pythonhosted.org/packages/9f/bb/96031cefa43e60737eded0a7dd933d08dc092203b8c85c235e4b8e9d6046/svenweb-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "0d1d77b1fdb029eeebd6d7d7f9cf5d05", "sha256": "39b4a3ac4ec127a341e2eef0ecc49ea580affc99800144b022567efe42e185a1" }, "downloads": -1, "filename": "svenweb-0.4.tar.gz", "has_sig": false, "md5_digest": "0d1d77b1fdb029eeebd6d7d7f9cf5d05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13203, "upload_time": "2010-01-31T07:18:24", "url": "https://files.pythonhosted.org/packages/1f/de/c7fa4480fedf221a2d6573cadd672668402f4fc7d0af3a892a948fe5b9b6/svenweb-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "c92eb571199348eb4380f7c56306672b", "sha256": "6cf934ab15364ee073675771b6909eb98a4c1f31e0cd7880676483bcebda958a" }, "downloads": -1, "filename": "svenweb-0.4.1.tar.gz", "has_sig": false, "md5_digest": "c92eb571199348eb4380f7c56306672b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13254, "upload_time": "2010-01-31T07:26:09", "url": "https://files.pythonhosted.org/packages/13/f1/cb0ecc69272225b6f4cd82fdb79209db9cc51bbf710ffb510d463e740573/svenweb-0.4.1.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "1a4dc47a9df878bd1cc0963dbeacc771", "sha256": "f1f5f160f3014c338f723e2d181c5acf28d4d0bd92913c0f79a8eecdb221e326" }, "downloads": -1, "filename": "svenweb-0.5.tar.gz", "has_sig": false, "md5_digest": "1a4dc47a9df878bd1cc0963dbeacc771", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11268, "upload_time": "2010-02-16T18:20:55", "url": "https://files.pythonhosted.org/packages/8c/09/0e27ac69b01beaf2d6f56bc3e41539741f9e1edb105d1978a9c869ac30ec/svenweb-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "908bbca8f238d82e0d75828b4e117376", "sha256": "86de3ed87183e744fd8a518f61f4e19e0356f3328a7d9977948667434e848ce8" }, "downloads": -1, "filename": "svenweb-0.6.tar.gz", "has_sig": false, "md5_digest": "908bbca8f238d82e0d75828b4e117376", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35531, "upload_time": "2010-11-10T17:54:00", "url": "https://files.pythonhosted.org/packages/09/b0/7d876435bcdae56b265973f1e1b04abce5adc7841d45151545adb8315842/svenweb-0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "908bbca8f238d82e0d75828b4e117376", "sha256": "86de3ed87183e744fd8a518f61f4e19e0356f3328a7d9977948667434e848ce8" }, "downloads": -1, "filename": "svenweb-0.6.tar.gz", "has_sig": false, "md5_digest": "908bbca8f238d82e0d75828b4e117376", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35531, "upload_time": "2010-11-10T17:54:00", "url": "https://files.pythonhosted.org/packages/09/b0/7d876435bcdae56b265973f1e1b04abce5adc7841d45151545adb8315842/svenweb-0.6.tar.gz" } ] }