darcsden

Darcs repository UI and hosting/collaboration app (hub.darcs.net branch). http://hackage.haskell.org/package/darcsden

Latest on Hackage:1.1.1

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

GPL licensed by Alex Suraci
Maintained by Alex Suraci, Simon Michael

darcsden is a darcs repository hosting platform, providing a web application for browsing and managing repos, users, and issues, and a SSH server for push/pull and quick repository creation.

Home: http://hackage.haskell.org/package/darcsden

To install:

"cabal install darcsden" will install darcsden and darcsden-ssh executables with generic settings. In particular, the web app's base url will be "http://localhost:8900", and multi-user features will be enabled.

For more control, get the darcsden source, adjust src/DarcsDen/Settings.hs, and run "cabal install" in the top source directory. There are also several optional build flags in darcsden.cabal, mainly to assist with building on windows.

To run darcsden you also need:

  • Redis (for storing web session data)
  • CouchDB (for storing user/repo/repository data)

Both should be running on their default port, or you can change that in Settings.hs. You should configure them by running:

darcsden --install

You should have a "darcsden" user account (for running the app and owning the files), with a ssh key:

adduser --system --home /home/darcsden --shell /bin/bash --group --gecos DarcsDen darcsden
sudo -u darcsden ssh-keygen

To avoid obscure errors due to mixed file ownership in ~/.darcs/cache, always run darcsden as the darcsden user, with $HOME set properly. So if using sudo, include the -H flag, like this:

sudo -Hu darcsden COMMAND...

The directory where you start the web app should contain darcsden's public/ directory. Or you can run it behind a web server that'll serve /public/* requests from that directory.

Some features require extra configuration to work:

  • OAuth:

    • Create developer applications for the oauth services:
      • Github: https://github.com/settings/applications
      • Google: https://code.google.com/apis/console
    • Set callback urls:
      • Github: same as your baseUrl
      • Google: multiple callbacks:
        • baseUrl ++ "register/google/response"
        • baseUrl ++ "login/google/response"
        • baseUrl ++ "sync/google/response"
    • Enter Client ID and Client secret into environment variables:
      • Github: Add these lines to your shell startup export GITHUBCLIENTID=yourclientid export GITHUBCLIENTSECRET=yourclientsecret
      • Google: Add these lines to your shell startup export GOOGLECLIENTID=yourclientid export GOOGLECLIENTSECRET=yourclientsecret
  • Forgot Password:
    • Configure your default sendmail to be able to send emails
    • Edit sendEmail, and sendName to the email address you can use
  • File edit:
    • For proper file type detection, ensure that you have xdg-utils installed.
    • Set xdgMimePath appropriately if xdg-mime is not in PATH
  • Webdriver Tests:
    • Download and start selenium server from http://docs.seleniumhq.org/download/
    • Ensure that you have configured OAuth
    • You need a test google and github account:
      • export GOOGLEUSERNAME, GOOGLEPASSWORD, GITHUBUSERNAME, GITHUBPASSWORD.
    • run ./dist/build/darcsden-test/darcsden-test

To start:

For a quick test, run:

sudo -Hu darcsden darcsden

and visit http://localhost:8900 (or other url configured in Settings.hs) in your web browser.

This package provides separate executables for the web and SSH servers, darcsden and darcsden-ssh respectively. You could run them manually while logged in as the darcsden user via screen or dtach. Or, configure them as daemons. See darcsden.god, or these sample supervisord.conf entries:

[program:darcsden]
command=sudo -EHu darcsden /path/to/darcsden --port 8900
directory=/home/darcsden
priority=3
redirect_stderr=true
autostart=true
autorestart=true
environment=LANG="en_US.UTF-8"

[program:darcsden-ssh]
command=sudo -EHu darcsden /path/to/darcsden-ssh 22
directory=/home/darcsden
priority=3
redirect_stderr=true
autostart=true
autorestart=true
environment=LANG="en_US.UTF-8"

Here's a sample apache vhost config:

<VirtualHost *:80>
ServerName my.host.name
RewriteEngine on
ProxyPreserveHost On
ProxyErrorOverride On
RewriteRule ^/(.*) http://127.0.0.1:8900/$1 [P]
</VirtualHost>

Windows:

darcsden indirectly depends on two external libraries: OpenSSL and pcre.

The -f-ssh flag can be used to disable the ssh server and remove the dependency on OpenSSL.

The -f-closing flag disables the ability for checkins to automatically close issues, removing the dependency on pcre.

OpenSSL can be installed from http://slproweb.com/products/Win32OpenSSL.html - download "Win32 OpenSSL v1.0.1e" or whatever similar version is current. [At the time of writing, darcs doesn't work with 64 bit Windows, but if this changes then a 64 bit version can be downloaded from the same location.]

Pick a directory to install it to, e.g. c:/OpenSSL-Win32 - and install HsOpenSSL with cabal install HsOpenSSL --extra-include-dirs="c:/OpenSSL-Win32/include" --extra-lib-dirs="c:/Win32OpenSSL"

Running as a Windows service:

darcsden depends on having CouchDB and redis running, so it also makes sense to install these as services, though it's not essential.

redis can be setup as a Windows service using https://github.com/kcherenkov/redis-windows-service

The redis service name is redis-instance.

CouchDB comes as a service already.

The CouchDB service name is something like "Apache CouchDB01cd861ad1dbd850", look for "CouchDB" in the output of "sc query" to get the exact name.

To install darcsden as a Windows service given the above names for the redis and CouchDB services, identify the path to darcsden.exe and to the darcsden source tree. Then alter the following command appropriately and run it all on one line:

sc create DarcsDen binPath= "c:\path\to\darcsden.exe --root c:\path\to\source\of\darcsden --service" start= auto depend= redis-instance/"Apache CouchDB01cd861ad1dbd850"

To uninstall the service, use "sc delete DarcsDen".

Contributing:

darcsden is a small, clean codebase that is fun to hack on. Discussion takes place on the #darcs IRC channel, and useful changes will quickly be deployed at hub.darcs.net, providing a tight dogfooding/feedback loop. Here's how to contribute a patch there:

  1. register at hub.darcs.net
  2. add your ssh key in settings so you can push
  3. fork your own branch: http://hub.darcs.net/simon/darcsden , fork
  4. copy to your machine: darcs get http://hub.darcs.net/yourname/darcsden
  5. make changes, darcs record
  6. push to hub: darcs push yourname@hub.darcs.net:darcsden --set-default
  7. your change will appear at http://hub.darcs.net/simon/darcsden/patches
  8. discuss on #darcs, or ping me (sm, simon@joyful.com) to merge it

Credits:

Alex Suraci created darcsden. Simon Michael led this release, which includes contributions from Alp Mestanogullari, Jeffrey Chu, Ganesh Sittampalam, and BSRK Aditya (sponsored by Google's Summer of Code). And last time I forgot to mention two 1.0 contributors: Bertram Felgenhauer and Alex Suraci.

darcsden depends on Darcs, Snap, GHC, and other fine projects from the Haskell ecosystem, as well as Twitter Bootstrap, JQuery, and many more.

Changes

All changes by release

darcsden 1.1.1 (2015/4/22)

  • require ssh 0.3+ to avoid a vulnerability

darcsden 1.1 (2013/07/20)

  • finalise docs some more
  • bump hsp dependency to the ghc 7.6 compatible version
  • speed up user list on front page
  • add missing web app files to cabal file
  • consistent heading
  • add missing web app files to cabal file
  • update contributing/credits in the readme
  • disable repo packing with darcs 2.8 to fix a build problem
  • depend on darcs 2.8.4+ or darcs 2.9+
  • add missing modules to cabal file
  • bump version to 1.1
  • finalise changelog
  • finalise announcement
  • add "built" in footer
  • auto2 target, workaround for running dev builds as right user
  • update 1.1 announcement
  • changelog update
  • small clarifications to register screen
  • note the -E required to preserve env vars with sudo
  • Remove charset parameter from mime if present
  • Add test for edit/add file
  • Put the codemirror object into window
  • Add ability to create files
  • Resolve ambiguty of edit button, by
  • Add instructions for running tests
  • Add tests for Github OAuth, and
  • Give more appropriate test failure messages
  • Add test for google sync
  • Add test for google login
  • Add test for creating account using google
  • When resetting state, remove userDir only if it exists
  • Reset state before running create user test
  • Add function to reset redis and couchdb states
  • Move couchdb datbase creation from WebServer to State Util
  • Basic test for darcsden,
  • Cabal entry for darcsden-test
  • Configuration instructions for OAuth, Forgot Password, and File Edit
  • Add xdgMimePath to Settings,
  • If xdg-mime fails somehow, default mime to text/plain
  • Remove carriage returns before saving the file in file edit
  • Edit link when browsing a file will direct to edit file
  • Add repoBase', which allows custom pagenav
  • Create a page for edit file feature
  • Import codemirror 3.14 for edit file feature
  • Add the javascript to load codemirror editor into the edit file page
  • Add css rules for proper alignment of the editor form
  • Create handlers for edit file
  • markdown line break, test through the web editing
  • depend on newer ssh which builds with latest libs
  • add CHANGES.md showing all changes by release
  • 1.1 announcement WIP
  • update author spellings to improve darcs show authors
  • tools: a place to configure OAuth env vars for dev build
  • display "DEV" not "DEBUG" for developer builds
  • set version back for a bit, 1.1 release delayed
  • Use updated session variables if redirecting to register
  • Give option to build packs in repository settings page, and
  • Add a handler for creating packs to a repository
  • Initialize rBuiltPacks to Nothing when creating a repository
  • Add a field to the Repository model indicating the last time packs was built
  • Show a current password field in user settings only if the user has a password
  • Insist on old password when changing passwords only if the account has a password
  • Change OAuth access functions to use http-conduit
  • Use the new OAuth paths in user handlers
  • Change OAuth paths to use http-conduit
  • Switch to http-conduit instead of http-streams
  • Remove ghc option threaded from executable darcsden
  • Resolve conflict between branches
  • Add buttons for OAuth functions to the pages
  • Add handlers for OAuth registration, login, and link
  • Add a variable for oauth reg to Session
  • Add OAuth utility functions, which:
  • Update darcs import to match the latest API of screened
  • Start OpenSSL when starting the webserver
  • Add names of the environment variables storing OAuth app authentication to
  • Add dependencies HSOpenSSL, network, http-streams for OAuth feature
  • Create HSPages for forgot password feature, and
  • Add handlers for Forgot password feature
  • Add mime-mail to darcsden's dependency list for sending mails
  • Add utility functions for forgot password:
  • Add settings sendEmail, and sendName. You should be able to
  • return the updated session with setUser
  • Add OAuth identities to User feild, and add utility functions
  • Change user handlers to the new password field
  • Change the password fields of the user, so that they are optional
  • Load repository page after logging in
  • bump version and tested-with
  • tools: fix http port option
  • fix blaze-html warning, clarify dependency
  • fix WebServer warning
  • tools: use current ghc for dev builds, add ghci rule, don't use dev darcs/ssh by default
  • support current blaze-*
  • support/require pandoc 1.10+
  • document a couple of arguments to patches
  • stop Snap being verbose when running as a service
  • specify imports
  • conditionalise Windows service
  • document darcsden on Windows
  • document new options
  • renamed Win32-services-utils package
  • run as service
  • more debug utils
  • recognise OWNER/repo path in some case or other
  • add tested-with to cabal file
  • more updates for latest darcs
  • log accesses to ./access.log not console with a dev build
  • require newer ssh (#46)
  • we don't support pandoc 1.10 yet
  • tools: build all of darcsden, darcs and ssh in dev builds, for easier debugging
  • update for latest darcs
  • Rename repositories when forking, if neccessary
  • Support for Vagrant
  • getUsersWithRepos placeholder
  • old: disable hard-coded assignment & issue type fields, don't want to encourage enhancement issues right now
  • support/require blaze 0.5
  • check security question answer case-insensitively
  • drop some debug helpers now in the lib
  • 29: disconnect after ssh/scp to a bad path
  • 28: when forking, handle an existing private repo with the same name properly
  • 28: make bootstrapRepository less likely to put fs and db out of sync
  • make most headings bold again, I guess it is better
  • plain text readmes (and literal blocks in change notes) no longer have the gray bg & border
  • hide branches button when there are no forks
  • add bootstrap responsive design (width-adapting) styles, commented
  • front page: widen users column to reduce overlap in narrow windows
  • reduce source code font size a notch
  • show a border below file list; drop unnecessary readme heading
  • reduce heading sizes back towards normal browser defaults
  • set body font-size to 100% not 16px to respect browser settings better (per donri)
  • more robust layout of front page content and markdown lists generally
  • roll back some accidentally committed hunks
  • branches: use the "name's repo" format like all repos
  • changes: prevent line breaks in author name too
  • consistent change layout on changes and branches pages
  • drop unnecessary changes page header
  • use consistent style for next/prev buttons
  • all repos: whitespace fix
  • all repos: link "forks" to the parent repo's branches page as a convenience
  • all repos: show page controls at top also; increase page size from 50 to 500
  • don't show page controls if there is only one page
  • don't buttonize forks on branches page
  • another page layout: content at left, repo buttons at right, site buttons at top right (#16)
  • don't bother linking reporter name in issue list
  • use tables for more robust issue list layout with long issue names
  • allow prettier monospace font in markdown areas
  • let wide source code overflow to right as before
  • fix line numbers wrapping, enlarge & lighten source code
  • fix issue form bg color
  • don't gray out repo description
  • make issue page revise form layout a little more robust
  • lighten issues list
  • lighten branches list
  • fix branches page title
  • fluid page layout using bootstrap columns (#16)
  • lighten form styles
  • lighten headings
  • demote some more h1s I missed
  • begin using bootstrap's grid for page layout
  • adjust button icon alignment
  • make hyperlinks (other than main navigation links) blue
  • bump footer font size
  • where can I put this.. expose global layout more
  • drop the monospace font !
  • consistent non-dotted borders
  • drop excess heading line height
  • use bootstrap's default font family & size
  • restore patch page subheader
  • demote patch section headings and branch names to h3
  • more compact non-heading style for changes, issues, and patch file names
  • change secondary page headings to h2
  • remove dead code
  • keep bootstrap's pagination styles out of our pagination controls, minor cleanups
  • enable bootstrap css/js along with the rest
  • add bootstrap css/js to project
  • bump version description in footer
  • switch to 8901 for default dev instance port
  • include highlight.css only when built with highlighter
  • move javascripts back to the top, order matters
  • drop media=screen for consistency, till there's a clear need
  • move js scripts to end of page
  • bump jquery to latest release

darcsden 1.0-hub (2012/09/19)

  • sync with latest docs/cabal file from 1.0
  • port the alternate highlightingkate/highlighter flags from 1.0
  • switch highlighting theme from kate to pygments
  • remove disabled font size styles
  • hcar participants update
  • move repos below users on the front page for now as suggested
  • Give better errors on SSH command misuse
  • Give better error on missing SSH key
  • bring HCAR up to date
  • bring draft announcement up to date
  • fix numbered list style in markdown
  • doMarkdown variant that doesn't escape html
  • clarify fixEscapes
  • remove unnecessary import from Base
  • indent list items in markdown
  • add moz and opera transition styles as for webkit
  • remove obsolete browser prefixes on border-radius, box-shadow styles
  • disable 36 of 40 font size adjustments, simplifying styling
  • remove unused .error class
  • unnecessary inline style
  • settings cleanup

The darcsden 1.0 and 1.0.1 releases diverged from this branch, here are their approximate change logs:

darcsden 1.0.1 (2012/09/20)

  • bump version
  • readme/release note links for hackage
  • point to 1.0 source repo
  • restore missing highlightingkate/highlighter flags
  • update HCAR

darcsden 1.0 (2012/09/15)

  • final 1.0 docs
  • latest draft of cabal file from hub branch
  • latest draft of release docs from hub branch
  • fix numbered list style in markdown
  • replace "highlighting" flag with "highlightingkate" (default) and "highlighter", to select one or other
  • indent list items in markdown
  • add moz and opera transition styles as for webkit
  • remove obsolete browser prefixes on border-radius, box-shadow styles
  • fix Control.Monad.Trans warning
  • available patches -> branches button
  • shorten explore button name
  • revert many UI style changes from darcsden-hub branch, restoring "square" style

darcsden-hub/-1.0 fork

  • create a repo -> new repo button
  • render markdown files to html instead of highlighting them
  • extract isMarkdown
  • don't show non-viewable private branches in branches view
  • try a little whitespace separating repo "view" and "action" buttons
  • try "branches" instead of "available patches" button
  • list all related repos on the patches page, even with nothing to merge
  • make Fork showable for debugging
  • small refactor in repoPatches
  • getForkChanges formatting
  • allow repo members to merge patches
  • add owst to credits
  • simplify flags description
  • clarify draft status of release announcement
  • add build flags to makefile
  • fix compilation warnings
  • Abstract out forked-from string generation. Now use it on users' repo listings
  • Fix build against current screeened darcslib
  • Fix build error due to missing definition of frontPageContent
  • cabal file updates
  • readme, announce updates
  • move db hosts/ports to Settings.hs
  • drop --readme option
  • tweak default settings
  • update release notes
  • re-enable new issue form's assignment and type fields in default build
  • draft 1.0 announcement, in progress
  • add .authorspellings to clean up darcs show authors
  • streamline front page layout, compress user/repo lists a little
  • code cleanup
  • tweak patch timeout error msg
  • show an error message on the patch page if fetching the patch times out
  • show the patch page right away, and the patch data when it's ready
  • fix compilation issues
  • potential fix for #12 - private repos being darcs gettable
  • set up the db view for browsing issues by tag
  • don't bother logging the full request in error log even in DEBUG mode
  • fix compilation warnings
  • drop unnecessary curly braces in cabal file
  • fix cabal build failure when ssh is enabled
  • update error message humanisations
  • add compile-time flag to control auto-closing of issues
  • add a flag to enable the ssh server
  • add flag to enable highlighting
  • use DARCS28 flag for subsidiary executables too
  • darcs 2.8 build fixes
  • fix favicon
  • fix clipped file/folder icons in files list
  • fix reversed file order in patch summary
  • 10: fix patch view hunk reverse-order regression
  • 7: give a proper 404 when viewing a nonexistent patch id
  • disable h-k's blue .fu style that is mysterious in haskell source
  • increase readme font size
  • let long source lines overflow right if they want
  • reorganise styles a bit
  • switch to "kate" highlighting theme
  • increase source code font size
  • /delay/SECS route for testing timeouts, prints a message after the specified delay up to 300s
  • more user-friendly error messages
  • enable line anchors in highlighted source
  • "patches from others" -> "available patches", fix button alignment
  • takeUpTo cleanups
  • elide large patches; reduce max request time to 10s and max file/patch display size to 200K
  • import both highlighting libs, make it easy to switch between them for testing
  • sync with latest darcs-screened
  • Darcs.Util renamed to Darcs.Util in latest darcs (respects DARCS28)
  • move log files to a subdirectory
  • keep user files in a subdirectory
  • fix a warning
  • Fix missing whitespace on replace summary
  • Remove extra whitespace
  • fix markdown pre/code block colours, second attempt
  • fix h-k styles interfering with markdown code blocks
  • keep line numbers aligned with highlighted lines
  • add the remaining h-k styles, use tango
  • add some more highlighting-kate styles, use "pygments" for now
  • use same source code font size in changes
  • simplify highlighting error handling, let it render binary since it seems able
  • bump source code font size a bit
  • mention utf8-string dependency
  • begin switch from highlighter to highlighting-kate
  • Fix background overflow on code blocks
  • Fix merging upstream patches
  • Fix indenting on withParent
  • Make /patches link active on forked repos
  • Show upstream changes on /patches
  • latest developer makefile
  • make request timeout a setting
  • 6: show logged-in users their private repos
  • refactor error pages, use same layout for 404, intentional 500, and exceptions
  • move exception handler's error page to WebUtils with the rest
  • move db schemas to their own module
  • give a prettier error page (and log message) when exceptions happen. First cut.
  • adjust darcs-screened api options following chat with gh
  • build with latest darcs-screened, if the on-by-default "darcs28" cabal flag is turned off
  • fix issue tracker flag warning in SSHServer
  • hide repo settings issue tracker checkbox when when issue trackers are disabled globally
  • alphabetise users
  • make page heading more consistent when browsing files
  • explore -> all repos button
  • refactor issues button
  • reword the patches button and gray it out when there are no forks
  • add an "all issues" view, keep issue view buttons visible
  • rounded button corners
  • tweak my repos, settings button icons
  • set NOINDEX meta tag on patch and misc. form pages to discourage search indexing
  • #3: show a message instead of an error when browsing a file that can't be highlighted (eg images)
  • switch to underlining links by default
  • clarify renderHtml's source, import debug helpers
  • switch order of private and issue tracker checkboxes in repo settings
  • underlink links in issues
  • switch fork and issues buttons, keeping views and actions grouped
  • make the issue comment form consistent
  • fix clipping of issue comment headings
  • remove hard-coded issue assignment, type fields for now
  • let issue trackers be enabled/disabled per-repo
  • issues need the byrepositoryand_number view now, update the db designs accordingly
  • when issues trackers are disabled disable url handlers as well
  • add a "my repos" button when logged in
  • drop cabal build flags since you have to edit Settings in any case
  • add DEBUG to version string in footer for debug builds
  • clearer elided message when viewing a patch with many hunks
  • Fix DSA public key identifier.
  • partial workaround for errors viewing too-large patches
  • README updates
  • footer layout; underline links there and in a few other places
  • move type signatures to the end of settings, and log everything to console in debug mode
  • add a footer with version and contact info, and debug build options, to settings
  • more messing around with changes font sizes
  • fix excessive borders in lists in patch notes, keep patch list font size consistent
  • increase maxlength of input fields to 1000
  • serve a /robots.txt, allowing all bots by default
  • build unthreaded by default, to avoid intermittent errors and eventual stylesheet loss due to non-threadsafe cwd setting by libdarcs
  • serve the public directory with an absolute path to be robust against thread cwd issues
  • move log file paths to Settings
  • don't hide fork/patches buttons in single-user builds
  • fix display of non-user patch authors with no real name part, showing email address up to @
  • replace patch author email addresses with usernames more reliably, eg in changes
  • make user list bold, again
  • keep log in/out buttons on one line
  • underline hyperlinks in the front page intro text
  • de-bold website links in repo list
  • show create repo button only on the user's own repo list
  • smoother change borders
  • show repo website link with consistent style
  • underlined hyperlinks, begone
  • embolden user list, directories in files view
  • lighten explore page styles
  • add a files button to repo sidebar
  • miscellaneous old and new style tweaks.. site font, whitespace, emphasize repo & patch names
  • improve pagination controls layout, show at top as well
  • less whitespace and decoration for changes and markdown content
  • disable the bootstrap feature, it is too slow/fragile for now
  • make user page repo links absolute so they work when url has a trailing slash
  • show create repo button only when logged in
  • move explore repos button to the front page only
  • move create repo link to a sidebar button
  • don't hide the front page from logged-in users
  • fix setting TCP port on the command-line
  • three cabal build flags for personal use (multiuser, deletefiles, issuetrackers)
  • list users on front page
  • make breadcrumbs' site link and front page content configurable
  • make hostname, base path and base url configurable in Settings.hs
  • clean up cabal file a little, forget about ghc 6.12
  • fix remaining warnings
  • fix redundant imports
  • fix more Snap.Types warnings
  • fix a snap types warning
  • make text fields bigger
  • fix redirect after merging
  • extract global Settings.hs
  • centralise userRoot setting and change it to /home/darcsden
  • provide debug helpers from DarcsDen.Util
  • allow latest snap (0.9)
  • require darcs > 2.8.1 (with prim v1 job patch)
  • bump version to "0.6 alpha"
  • support latest GHC, darcs, and snap, aggregating previous work
  • discourage spam registrations with a security question similar to darcs wiki
  • disable browser autofill on register form fields
  • fix emailFrom with blank author info

darcsden 0.5 (2012/04/14)

  • version 0.5
  • ignore LC_* env var set requests
  • add initial high-level darcslib wrapper
  • add favicon png
  • constrain snap version number
  • cabal file version updates
  • updates for latest darcs/blaze-html/snap
  • PostHook.hs takes into account the case where the repository is private
  • a less-scary error message when $DARCSPATCHESXML isn't set
  • use get for forking and bootstrapping rather than init and pull
  • added getOneOf for getting alternative attributes (i.e. if one was renamed); fixes changes made in an issue comment that changed something to an empty value
  • allow obliterate over ssh
  • allow scp -f without --
  • footer cleanups; added a donate button
  • sort in alphabetical order at /explore
  • corrected user name displayed in issue body
  • oi. really corrected commenting. note to self: don't read other things while I'm typing.
  • corrected commenting
  • bump up font size for inline code in markdown
  • correct double-escaping
  • show issue number in page title
  • use issue number for its URL. closes #9.
  • viewing issues by tag; use ^ for "and" and ~ for "or". closes #1.
  • keep track of "from" values in comment changes
  • allow revising an issue's description. closes #3.
  • minor change, again to test post-hooks (use strip in authorFrom). closes #5 (not really).
  • corrected post-hook
  • tiny meaningless change so I can test the closing mechanism. closes #5.
  • corrected getIssueByNumber
  • add comments for closing issues. closes #5.
  • allow a few other phrases for post-hook
  • added initial post-hook for closing issues
  • list issues with newest up top
  • corrected double shadow in blob view
  • woops; save issue numbers
  • a few defaults for some state object fields
  • update the "updated" field when updating an issue
  • issue numbers + some cleanups
  • use getAttr for other state objects, added getAttrOr/getTime/getID/getRev
  • list issues in reverse-chronological order
  • corrected comment author name
  • slight tweak for add-tag form
  • spruced up the new-issue form, implemented adding arbitrary tags
  • corrected issue closing, added reopening
  • correct issue comment gravatar sizes
  • sort issues and their comments by their updated date
  • properly escape text before markdown'ing it
  • any logged-in user can update issues
  • css fixes
  • --install now sets up issues and comments databases
  • initial work on issue commenting/updating
  • added getAttr helper for reading a value from a JSON object
  • normalize line endings before using pandoc for markdown
  • rMember record field is now a list of usernames, not user IDs (any repositories with members must be updated to reflect this)
  • don't set uid/gid/ just start it as the user
  • password changing
  • ensure we're only bootstrapping http/https urls, corrected `Or' validation, and added isEmpty validator
  • init ssh command with a given repository description
  • cleanups
  • shrunk the favicon a bit
  • added favicon
  • correct $PATH for darcsden god config
  • corrected SSH authorization, and log login attempts
  • added god file
  • hspygments -> highlighter, cleaned up DarcsDen.Handler.Repository.Util
  • issues system updates
  • use hspygments and text for highlighting and bytestring <-> string conversion, respectively
  • progress on the issues system, plus some cleanups
  • orphan a repository's forks when deleting it
  • /forks -> /patches, removed console.logs, plus other fixes to make /patches usable
  • improved checkbox ticking in forks view
  • corrected repo links being shadowed by the canvas
  • updated boringfile
  • update to darcs 2.5.1+, mtl, and snap 0.3+, correcting forks view along the way (thanks Heffalump!)
  • cleaned up main.js
  • cleaned up findAllDeps/etc.; removed HiddenFrom
  • removed QuickCheck dependency

darcsden 0.4 (2010/12/20)

  • updated synopsis
  • updated description
  • added Setup.hs, version bumped to 0.4, bumped cabal-version
  • corrected non-markdown READMES getting the white-on-black treatment
  • don't check DBs for --readme or --install, and just generate a README from --readme
  • added a note to the README about --readme
  • moved INSTALL file to a --readme flag
  • added --install, which sets up CouchDB for you
  • tweaked location for keypair
  • UI tweaks
  • use new rsaKeyPairFromFile function in ssh 0.2.5 rather than convoluted .keypair format
  • corrected login button background CSS
  • /browse -> /explore, added button for it, and changed the main links to the button-style
  • corrected repository grouping at /browse
  • corrected changes list when there's a darcs replace log
  • highlight patch hunks in parallel
  • big ol' code style update
  • reorganization & cabal file cleanups
  • need ssh 0.2.4+
  • removed unused variable
  • corrected highlighting of source code containing utf8
  • atomo pygments lexer updates
  • corrected pygments highlighter; kills runaway processes
  • added Atomo lexer for pygments
  • corrected fallback highlighting
  • use Pygments for highlighting
  • slight forks list correction
  • /browse corrections; show forks of forks on their own for now
  • teeny tiny tweak
  • bumped ssh dependency to 0.2.2, which uses transformers
  • moved repository control links over to the left
  • reorganized breadcrumb for file browsing
  • group repository forks together at /browse
  • split the darcsden ssh server into another executable, plus misc. cleanups
  • improved scp security
  • use SHA512 for passwords
  • specify /srv/darcs for http logs
  • don't allow any tomfoolery with the scp path
  • corrected response for unknown requests, bumped ssh dependency number
  • ignore LANG env requests
  • handle scp requests
  • allow debug commands
  • removed Crypto and uuid dependency
  • updated darcs dependency version
  • split SSH server into its own package: http://darcsden.com/alex/ssh
  • bumped up snap versions
  • output invalid requests
  • ensure that redis/couchdb are usable at startup
  • use 127.0.0.1 rather than localhost
  • corrected notifications added during same response that shows the page
  • Corrected empty repository logic and fixed whitespace.
  • Corrected Python import in INSTALL file.
  • More INSTALL file stuff.
  • Updated INSTALL file.
  • Only show the "remove members" field if there are members to remove.
  • Show 404 pages rather than warnings for invalid repository views.
  • Show different messages with the proper push URLs when vieweing an empty repository.
  • Fixed SSH stuff using getRepository rather than getOwnerRepository.
  • Fixed repository viewing logic.
  • Members of private repositories can now access the repository.
  • Ability to edit repository private status.
  • Tweaked icon positioning for private repositories in user repo list.
  • Added repository public/private classes to user repository listings.
  • Don't include private repositories in getRepositories.
  • Fixed .private-repo class showing edit icon, tweaked icon positioning.
  • Save rIsPrivate as is_private in JSON Repository instance.
  • Private repositories.
  • Take HTTP/SSH port numbers as arguments.
  • Fixed getRepositories.
  • Cleanups.
  • Removed bin directory.
  • Specify cookie path as /; fixes weird logged in/logged out state possibly changing while browsing around.
  • Cleaned up DarcsDen's SSH request handling and verification; added init command for quick repository creation.
  • Channel cleanups and helper functions.
  • Use Redis for storing sessions.
  • Removed ssOutSeq (no longer used), cleaned up a few minor warnings.
  • Preemptively check if the handle is closed to prevent "end of file" messages.
  • Might as well bump up the version number (twice; once for the Snap changeover, another for the new SSH server).
  • Swapped a few lingering putStrLns that were used for debugging.
  • Woops, added DarcsDen.Debug module.
  • Converted print debugging statements to calls to a new DarcsDen.Debug.dump function.
  • Tweaked saneRepo to catch more odd cases.
  • Added KeyPair to SessionConfig for the server's private/public key.
  • Removed redundant rprivN; it's always in the pubkey anyway.
  • Removed CTR TODOs.
  • Initial integration of the new SSH server into DarcsDen, removed old Python server.
  • Tweaked PublicKey authentication to just contain a username and PublicKey.
  • Generalized read functions into NetReader, added blobToKey, plus various cleanups.
  • Added ssh-dss (DSA) public/private key support.
  • Send random bytes as padding.
  • Handle other AES key sizes.
  • Proper channel handling and reorganization to accomodate it.
  • Made SSH more flexible; authentication and channel requests are now handled by a configuration.
  • Keep track of window size and send WINDOW_ADJUST when we need to so that gigantic data transfers work.
  • Improved process I/O redirecting, fixed sending EOF in response to EOF, plus misc. cleanups.
  • Print a message when we lose the connection.
  • Ensure packets are sent sequentially by having a single "sender" thread that reads from a channel. Also added initial exec channel request support.
  • Naming convention tweaks for Packet monad and packet handlers.
  • Fixed unmpint and toBlocks overflow.
  • A much-needed cleanup.
  • Cryptography overhaul; proper CBC stream decryption/encryption, and use Crypto package instead of AES.
  • Initial SSH server work; transport layer (RFC 4253) functional.
  • Added CouchDB to required packages list for darcs-ssh.py.
  • Removed "code" class wrapping markdown patch notes.
  • Markdown patch notes, removed patch notes from atom feed summaries.
  • CSS tweaks for repository READMEs.
  • Fixed settings page.
  • Added access/error logging.
  • Fixed user viewing, this time keeping repository actions working.
  • Rolled back previous record since it breaks repo viewing instead.
  • Fixed / and /(user) conflicting.
  • Updated SSH server CouchDB URL.
  • fixed CSS class for preference changes in summary
  • No more warnings.
  • Serve static files without grabbing the user's session.
  • Fixed repository browsing, raw file viewing, and darcs get over HTTP.
  • Minor fixes for Snap, bumped required Snap version to 0.1.3, and changed the CouchDB port to 5984.
  • Initial Snap conversion work.
  • Fixed duplicates in patch summaries.
  • Added initial structure for private repositories. Not enabled or complete yet.
  • Tweaked ID for code lines; #L123 looks nicer than #LC123 in urls.
  • Fixed doubled title at user index.
  • Fixed "again" text on registration form.
  • Fixed viewing un-parseable source, and added clickable line numbers.
  • Fixed source code leaving `highlight' unescaped if the parse fails.
  • Refactored getReadme and added an isTooLarge function for checking blob source.
  • Added a filesize check to blob viewing, and added raw file viewing.
  • Fixed darcsden :: darcsden as title for /.
  • Fixed a few warnings.
  • Fixed some spots where raw authors would be displayed for patches, and fixed repositories with no changes showing up at /forks.
  • Small fixes in the ssh server.
  • Changed ssh server to run on a higher port number.
  • Use python 2.x syntax for exception catching.
  • More SSH server fixes and tweaks.
  • Updated the SSH server a bit.
  • Fixed full name in website field on settings page.
  • More readJSON cleanups and tweaks.
  • Fixed merge checkbox names, changed to merge:(rid):(pid).
  • Added initial installation instructions.
  • Fixed main updated tag in changes atom feed, and changed PatchLogs to contain UTCTimes instead of Strings for pDate.
  • Added member stuff back in; stored per repository. Also cleaned up Repository.readJSON.
  • Added getUserByID.
  • Grab the latest session when notifying the user of something so they don't just replace each other if more than one is displayed on a page.
  • Redirect to / after deleting a repository, rather than the user's profile.
  • Don't grab the session when we don't need to (e.g. /public). Also removed unneeded arguments from notFound and errorPage.
  • Moved the user-grabbing parts of toLog into a separate function that goes over the log and checks users only if they haven't already been checked. (30 CouchDB requests per page in the changelog -> number of different users in the log)
  • Fixed getRepositoryByID and repository forking.
  • Added old-time to cabal file (boo!), added a startup message so I don't sit there like a fool waiting for it to say something before I realize it doesn't, plus some more minor cleanups.
  • Re-added bootstrapping.
  • Grab forked repos much more effectively and less-crashingly. Also fixed some more whitespace quirks.
  • Cleaned up handler function.
  • Fixed serveDirectory for /public.
  • Lots of page serving tweaks.
  • Re-added serveDirectory (without MIME stuff) for serving public/ and _darcs directories, and cleaned up Main.hs.
  • Fixed double escaping and removed old commented-out code.
  • Bumped the version number.
  • Initial code for the rest of the repo pages, plus some helper functions for user/repo URLs.
  • Cleaned up and cabalized.
  • Lots o' cleanups.
  • Removed some more old unix stuff.
  • Removed setRepoPermissions.
  • Added submit button to init page.
  • Initial repo init and browse pages.
  • Fixed stale session being passed to pages.
  • Fixed settings form and tweaked register form for internal consistency.
  • Fixed User.showJSON
  • Only update the session if it has notifications to wipe.
  • Read the inputs and cookies once, and then store them in an Env. Fixes blocking on a second attempted input read.
  • Expanded that debug info.
  • Added base page wrapper around user pages.
  • Fixed the nav showing the wrong stuff for logged in/logged out.
  • Initial move to HSP and WAI, plus tons of other vaguely related stuff.
  • Removed defunct Darcsden.State module.
  • Initial conversion to CouchDB.
  • Added initial SSH server.
  • Added some styling for code in READMEs.
  • Show token replaces on patch views.
  • show long comment on changes view
  • show long comment on patch view
  • Dependency indicators at the forks listing.
  • Removed some debugging code.
  • Added dependency information to id/classes in the fork log.
  • Fixed up fork merging.
  • Notices now return IO () instead of a new Session; the reason it was like that before no longer applies.
  • Removed `merge' from the global scope in DarcsDen.State.User; it's only used in hashPassword.
  • DarcsDen.Validate.when -> DarcsDen.Validate.iff
  • Added forks listing page, which lets repo admins bring in patches from forked repos.
  • Fixed forkRepository setting the wrong information, and fixed the console help dialogue being wrong with "exit".
  • refactor: gather instance declarations
  • preliminary devmode setting, change this to run without creating users/groups
  • refactor: gather settings in one place
  • Show repo members with 'get group'.
  • user -> owner
  • Shell cleanups.
  • Fixed a typo in the shell help dialogue.
  • Fixed up admin shell stuff, and added unset command.
  • Added user and repository editing to the admin shell.
  • Reorganized some State stuff, and added an initial admin shell.
  • Added MonadIO instance for Dirty.
  • Forked repositories now keep a reference to the original. Also updated the User and Repository records to remove rUsers and uPubkeys, which are not used.
  • Added pubkeys to the registration form, plus slight cleanups.
  • Fixed checking if there are any repositories to show; show a message when viewing a user with no repositories.
  • Ignore case when sorting repositories.
  • HLint changes.
  • Sort repositories at /browse by their name rather than their owner.
  • Added public repository browsing.
  • Kill the web server thread on shutdown. Helpful for debugging in GHCi.
  • Fixed getting members of a repository.
  • Fixed removeMember.
  • Cleaned up Dirty usage and running shell commands.
  • Compile with -threaded to avoid blocking system calls.
  • New repositories can now be bootstrapped from a URL.
  • Added a improved system of working with shell commands and error handling.
  • Fixed others not being able to read public directories.
  • Added a repository fixer.
  • Change repository permissions so that others can read them.
  • Removed DarcsDen.Data; no longer needed.
  • workaround for "no instance ToSElem ClockTime" with ghc 6.10
  • feeds: various fixes to make the changes feed more valid
  • feeds: link to changes feed from repo and changes pages
  • add "extrahead" field to the base template
  • feeds: fix repo name
  • indentation
  • provide a .../changes/atom feed
  • restore the Makefile with tag/clean/ci rules for cleaning/tagging/auto-recompiling
  • fix "no instance ToSElem String" with 6.10
  • Removed the silly shell scripting in removeMember; use System.Posix again.
  • Slight cleanups.
  • Fixed empty file listings being shown.
  • Ensure that darcsden is run as root.
  • Replaced as many System.Cmd.system calls as possible with System.Posix usage.
  • add missing ghc option in Data.hs
  • adapt ghc-options to 6.10 also
  • Added ghc-options to cabal file and removed Makefile.
  • Fixed patch summaries.
  • Initial cabalization.
  • Switched to HStringTemplate.
  • Use Data.List.Split in State.Repository.
  • Heeded HLint.
  • Hash group names.
  • Oodles of icons.
  • When forking and the target repository name is already in use by the user, ask for a different one.
  • Removed chgrp hack; use setgid.
  • Cleanups.
  • Fixed up repository editing and renaming.
  • Fixed getInputs breaking with empty fields.
  • Notices will now re-grab the session to make sure nothing gets lost (e.g. repeated notices in a loop overwriting each other).
  • Use wordsBy rather than splitOn.
  • Moved a couple more functions to DarcsDen.Handler.Repository.Changes.
  • Added exhaustive pattern-match for pageFor.
  • Fixed index match for splitOn behaviour.
  • Split up Darcs.Handler.Repository a bit.
  • Use split package.
  • Fixed footer being smashed up against forms and other floating elements.
  • Handler cleanups.
  • Tweaked repository verification to only check if a repository is valid if it exists.
  • Added a footer.
  • Make repository directories unreadable by others.
  • Adding and removing members to/from repositories.
  • Removed redundant repository description from blob view.
  • Delete a repository's group when destroying it.
  • Added per-repository user groups; this will be the backbone of adding committers to repositories.
  • notFound now serves the proper error code.
  • Tweaked serveDirectory to take absolute paths.
  • Repository forking.
  • Handler reorganization; added a general handleRepo which does the common validations and moved to Handler.Repository, and moved serveDirectory to HackUtils.
  • Added a default crumb to repo-base.
  • Added edit/delete links.
  • Shortened repository handler names and removed some redundant definitions.
  • Moved repo desc/nav to a repo-base for all repo pages to extend.
  • make clean now removes Main
  • Fixed up patch view; summary links work, removed links for removed files, added files link to the files in the repo, and patch diffs link to the file they modify.
  • Removed ./ part of filenames in patch view.
  • Added Makefile.
  • Cleaned up all warnings.
  • Added GPL3 license.
  • Tweaked the intro page.
  • Repository editing and deleting.
  • Added some content to the index page when not logged in.
  • Shorter patch view URLs.
  • Only show the summary section if there's stuff to show.
  • Show preference changes in patch summaries.
  • Removed lib directory (highlighting-kate now has its own repository)
  • Removed text-press from lib/ (has its own repository now)
  • Added pagination links.
  • Fixed build-depends for text-press.
  • Repository handler cleanups.
  • Repository changes pagination.
  • Removed dist directories from tree.
  • Ignore dist directories.
  • Added Go syntax highlighting.
  • Change ownership of new repositories to its owner.
  • Added a few warning displays to failed validation branches, and automatically log the user in after successful registration.
  • Proper name sanity checking and filtering.
  • Cleaned up HackUtils.
  • Serve darcs repositories with HTTP at the repo's URL.
  • Added a little message to empty repositories so the user knows what the push target is.
  • Bumped up source code size a notch.
  • If a user's pubkey does not exist, return "".
  • Added settings link.
  • Redirect to login if they try to create a repo while not logged in.
  • Added user settings page and pubkey updating.
  • Added a README.
  • User registration now creates the user on the system.
  • Removed Hack.Contrib.Press dependency for now.
  • Sanitize repository paths.
  • Redirect and show errors on repository viewing failure.
  • Added repoDir for getting the path for a directory with a given user/repo name, changed repo dir to /jail/home/(username)/(reponame), and removed no-longer-needed withDirectory.
  • log -> changes
  • Added some basic navigation.
  • Add entire session for page context, not just notifications.
  • Use relatize-dates instead of building up a wonky string from a CalendarTime.
  • No need for the log description to link to the page we're already on.
  • Added notification system, and updated most templates to reflect the new style (especially form stuff).
  • Spruced up the index and user viewing pages, added a base template, and thinned up the diff add/remove indicators.
  • Added modified text-press library pending cleanup and sending patches back to creator.
  • {{var}} escapes var for safe output.
  • Added {{{var}}} for unescaped output.
  • Fixed {% if foo.bar %} being parsed as {% if foo.bar.baz %}
  • Make sure requested paths to public/ are sane.
  • Cleanups.
  • Get a user by a log's author's email address and use it (if a user exists for it) for log pages, etc. Also misc. css tweaks.
  • Added handling for Binary changes.
  • Initial patch viewing.
  • Initial site design, repository browsing, and initial log viewing.
  • Split User stuff into its own handler.
  • Reorganization; moved some things from Handler to HackUtils. Also added repository viewing and browsing.
  • Ignore boring repos dir.
  • Redirect to index on repo init.
  • Added repository viewing, and flipped how repository keys are stored: (name, user) -> (user, name)
  • Redirect to / on succesful registration, and only show your repositories at the index if you have any.
  • Added sessions, logging in, and repository creation, and repository listing.
  • Added basic logging-in (not actually functioning yet; no sessions), and cleaned up some debugging junk.
  • Fixed If validation not collecting the validations from the predicate.
  • Added Show instances for OK, Valid, and Invalid. (show Valid is just explain since some things are not easily Showable)
  • Swapped arguments for IOPred / io to make using them a bit nicer.
  • Added cookie setting/getting HackUtils.
  • Split Invalid and OK into their own types, Result is now an Either on both.
  • Removed listToOctets use, refactored password hashing to intersperse the salt through the password.
  • No need to use `show' on a string when explaining it.
  • Refactored validation, simplfying code and adding IO capabilities. Added username existence validation.
  • Added passwords to users, with a migration from the old form (mostly for practice).
  • Added a slightly prettier and less confusing naming for If validation.
  • Ignore my TODO file.
  • Initial user registration.
  • Added initial input validation system.
  • Added HackUtils module, moved getInput(s) to it.
  • Ignore compiled Main.
  • Slight State tweaks.
  • Added highlighting-kate library for later.
  • State updates; added main State type that is a combination of everything.
  • Slight cleanup for Handler.
  • Added .boring file.
  • Initial state structure.
  • Cleaned up DarcsDen.Handler a little bit.
  • Initial record.
comments powered byDisqus