From 922e149de93844561160c2978d71531f3c08345e Mon Sep 17 00:00:00 2001 From: PeteG Date: Fri, 1 Oct 2010 04:20:03 +0000 Subject: Continuing discussion about reverting via the web interface. --- doc/todo/web_reversion.mdwn | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'doc/todo') diff --git a/doc/todo/web_reversion.mdwn b/doc/todo/web_reversion.mdwn index 92052eb26..34947b710 100644 --- a/doc/todo/web_reversion.mdwn +++ b/doc/todo/web_reversion.mdwn @@ -45,15 +45,23 @@ Peter Gammie has done an initial implementation of the above. > structure that `rcs_recieve` does. This could be done by using `git revert > --no-commit`, and then examining the changes, and then `git reset` to drop > them. +>> We can use the existing `git_commit_info` with the patch ID - no need to touch the working directory. -- [[peteg]] > > Then the code that is currently in IkiWiki/Receive.pm, that calls > `check_canedit` and `check_canremove` to test the change, can be > straightforwardly refactored out, and used for checking reverts too. +>> Wow, that was easy. :-) -- [[peteg]] > > (The data from `rcs_preprevert` could also be used for a confirmation > prompt -- it doesn't currently include enough info for diffs, but at > least could have a list of changed files.) -> +>> I added `rcs_showpatch` which simply yields the output of `git show `. -- [[peteg]] +> > Note that it's possible for a git repo to have commits that modify wiki > files in a subdir, and code files elsewhere. `rcs_preprevert` should > detect changes outside the wiki dir, and fail, like `rcs_receive` does. +>> Taken care of by refactoring `rcs_receive` in `git.pm` +>> I've tested it lightly in my single-user setup. It's a little nasty that the `attachment` plugin +>> gets used to check whether attachments are allowed -- there really should be a hook for that. +>> +>> Please look it over and tell me what else needs fixing... -- [[peteg]] -- cgit v1.2.3 From 3740f787571b0dff26d0b01cc63a22d9816c2896 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Fri, 1 Oct 2010 22:43:52 +0000 Subject: updated branch; fold discussion of rejected version into a toggleable --- ...ttp_or_https_in_urls_to_allow_serving_both.mdwn | 67 ++++++++++++++++------ 1 file changed, 49 insertions(+), 18 deletions(-) (limited to 'doc/todo') diff --git a/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn b/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn index e2d9a5993..f95b7af4b 100644 --- a/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn +++ b/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn @@ -59,6 +59,9 @@ becoming a problem for me. Is there anything I can do here? --[[Perry]] ---- +[[!toggle id="smcv-https" text="Some discussion of a rejected implementation, smcv/https."]] +[[!toggleable id="smcv-https" text=""" + [[!template id=gitbranch branch=smcv/https author="[[smcv]]"]] For a while I've been using a configuration where each wiki has a HTTP and @@ -140,33 +143,61 @@ you don't like my approach: >> making it easier to run two mostly-synched copies like I was previously >> doing is the only solution... --s +"""]] + ---- -**warning: untested branch ** [[!template id=gitbranch branch=smcv/localurl author="[[smcv]]"]] +[[!template id=gitbranch branch=smcv/localurl author="[[smcv]]"]] OK, here's an alternative approach, closer in spirit to what was initially -requested. I haven't tested this at all (it's getting rather late in UK time) -and it will probably be rebased later, but I've referenced it here as a proof of -concept. +requested. I haven't tested this on a full website with the CGI yet. The idea is that in the common case, the CGI and the pages will reside on the same server, so they can use "semi-absolute" URLs (`/ikiwiki.cgi`, `/style.css`, -`/bugs/done`) to refer to each other. My branch adds config options which -could be set as follows for ikiwiki.info or any branchable.com site: - -* local_url: / -* local_cgiurl: /ikiwiki.cgi - -Most redirects, form actions, links etc. can safely use this form rather than -the fully-absolute URL. If not configured, these options default to the -corresponding absolute URL, which is would also be correct for unusual sites -where the CGI and the pages aren't on the same server. - -(In theory you could use things like `//static.example.com/wiki/` and -`//dynamic.example.com/ikiwiki.cgi` to preserve choice of http/https +`/bugs/done`) to refer to each other. Most redirects, form actions, links etc. +can safely use this form rather than the fully-absolute URL. + +The initial version of the branch had config options `local_url` and +`local_cgiurl`, but they're now automatically computed by checking +whether `url` and `cgiurl` are on the same server with the the same URL +scheme. In theory you could use things like `//static.example.com/wiki/` +and `//dynamic.example.com/ikiwiki.cgi` to preserve choice of http/https while switching server, but I don't know how consistently browsers -suppot that.) +suppot that. "local" here is short for "locally valid", because these URLs are neither fully relative nor fully absolute, and there doesn't seem to be a good name for them... + +New API added by this branch: + +* `urlto(x, y, 'local')` uses `$local_url` instead of `$config{url}` + +* `IkiWiki::baseurl` has a new second argument which works like the + third argument of `urlto` + +* `IkiWiki::cgiurl` uses `$local_cgiurl` if passed `local_cgiurl => 1` + +* `IkiWiki::cgiurl` omits the trailing `?` if given no named parameters + except `cgiurl` and/or `local_cgiurl` + +Bugs: + +* I don't think anything except `openid` calls `cgiurl` without also + passing in `local_cgiurl => 1`, so perhaps that should be the default; + `openid` uses `cgiurl` anyway, so there doesn't even necessarily need + to be a way to force absolute URLs? Any other module that really needs + an absolute URL could use `cgiurl(cgiurl => $config{cgiurl}, ...)`, + although that does look a bit strange + +* It occurs to me that `IkiWiki::cgiurl` could probably benefit from being + exported? Perhaps also `IkiWiki::baseurl`? + +* Or, to reduce use of the unexported `baseurl` function, it might make + sense to give `urlto` a special case that references the root of the wiki, + with a trailing slash ready to append stuff: perhaps `urlto('/')`, + with usage like this? + + do_something(baseurl => urlto('/', undef, local)`); + do_something_else(urlto('/').'style.css'); + IkiWiki::redirect(urlto('/', undef, 1)); -- cgit v1.2.3 From 681b968ab9f728b5b548d27b42fc788ff39de14c Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Fri, 1 Oct 2010 22:46:50 +0000 Subject: how much indentation does a code block in a bullet point need? we just don't know --- ...d_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'doc/todo') diff --git a/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn b/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn index f95b7af4b..969b17fa2 100644 --- a/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn +++ b/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn @@ -198,6 +198,6 @@ Bugs: with a trailing slash ready to append stuff: perhaps `urlto('/')`, with usage like this? - do_something(baseurl => urlto('/', undef, local)`); - do_something_else(urlto('/').'style.css'); - IkiWiki::redirect(urlto('/', undef, 1)); + do_something(baseurl => urlto('/', undef, local)`); + do_something_else(urlto('/').'style.css'); + IkiWiki::redirect(urlto('/', undef, 1)); -- cgit v1.2.3 From 28c9f7dbcfa152957e15de3bd3fd91502e94635a Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Fri, 1 Oct 2010 22:50:26 +0000 Subject: clarification: too many things called cgiurl --- ..._ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'doc/todo') diff --git a/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn b/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn index 969b17fa2..262d5c22d 100644 --- a/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn +++ b/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn @@ -185,9 +185,10 @@ Bugs: * I don't think anything except `openid` calls `cgiurl` without also passing in `local_cgiurl => 1`, so perhaps that should be the default; - `openid` uses `cgiurl` anyway, so there doesn't even necessarily need - to be a way to force absolute URLs? Any other module that really needs - an absolute URL could use `cgiurl(cgiurl => $config{cgiurl}, ...)`, + `openid` uses the `cgiurl` named parameter anyway, so there doesn't even + necessarily need to be a way to force absolute URLs? Any other module + that really needs an absolute URL could use + `cgiurl(cgiurl => $config{cgiurl}, ...)`, although that does look a bit strange * It occurs to me that `IkiWiki::cgiurl` could probably benefit from being -- cgit v1.2.3