conflict detection, merging, etc should be done now, I think
parent
4d50e71d31
commit
6b6fd778c7
25
ikiwiki
25
ikiwiki
|
@ -487,11 +487,12 @@ sub rcs_commit ($$$) { #{{{
|
|||
if (-d "$config{srcdir}/.svn") {
|
||||
# Check to see if the page has been changed by someone
|
||||
# else since rcs_prepedit was called.
|
||||
my $oldrev=int($rcstoken);
|
||||
my ($oldrev)=$rcstoken=~/^([0-9]+)$/; # untaint
|
||||
my $rev=svn_info("Revision", "$config{srcdir}/$file");
|
||||
if ($rev != $oldrev) {
|
||||
# Merge their changes into the file that we've
|
||||
# changed.
|
||||
chdir($config{srcdir}); # svn merge wants to be here
|
||||
if (system("svn", "merge", "--quiet", "-r$oldrev:$rev",
|
||||
"$config{srcdir}/$file") != 0) {
|
||||
warn("svn merge -r$oldrev:$rev failed\n");
|
||||
|
@ -501,7 +502,6 @@ sub rcs_commit ($$$) { #{{{
|
|||
if (system("svn", "commit", "--quiet", "-m",
|
||||
possibly_foolish_untaint($message),
|
||||
"$config{srcdir}/$file") != 0) {
|
||||
warn("svn commit failed\n");
|
||||
my $conflict=readfile("$config{srcdir}/$file");
|
||||
if (system("svn", "revert", "--quiet", "$config{srcdir}/$file") != 0) {
|
||||
warn("svn revert failed\n");
|
||||
|
@ -530,8 +530,8 @@ sub rcs_add ($) { #{{{
|
|||
} #}}}
|
||||
|
||||
sub svn_info ($$) { #{{{
|
||||
my $file=shift;
|
||||
my $field=shift;
|
||||
my $file=shift;
|
||||
|
||||
my $info=`LANG=C svn info $file`;
|
||||
my ($ret)=$info=~/^$field: (.*)$/m;
|
||||
|
@ -1082,13 +1082,16 @@ sub cgi_editpage ($$) { #{{{
|
|||
|
||||
$form->field(name => "do", type => 'hidden');
|
||||
$form->field(name => "from", type => 'hidden');
|
||||
$form->field(name => "rcsinfo", type => 'hidden');
|
||||
$form->field(name => "page", value => "$page", force => 1);
|
||||
$form->field(name => "comments", type => "text", size => 80);
|
||||
$form->field(name => "content", type => "textarea", rows => 20,
|
||||
cols => 80);
|
||||
$form->tmpl_param("can_commit", $config{svn});
|
||||
$form->tmpl_param("indexlink", indexlink());
|
||||
if (! $form->submitted) {
|
||||
$form->field(name => "rcsinfo", type => 'hidden',
|
||||
value => rcs_prepedit($file), force => 1);
|
||||
$form->field(name => "rcsinfo", value => rcs_prepedit($file),
|
||||
force => 1);
|
||||
}
|
||||
|
||||
if ($form->submitted eq "Cancel") {
|
||||
|
@ -1144,7 +1147,8 @@ sub cgi_editpage ($$) { #{{{
|
|||
$form->title("creating $page");
|
||||
}
|
||||
elsif ($form->field("do") eq "edit") {
|
||||
if (! length $form->field('content')) {
|
||||
if (! defined $form->field('content') ||
|
||||
! length $form->field('content')) {
|
||||
my $content="";
|
||||
if (exists $pagesources{lc($page)}) {
|
||||
$content=readfile("$config{srcdir}/$pagesources{lc($page)}");
|
||||
|
@ -1158,8 +1162,6 @@ sub cgi_editpage ($$) { #{{{
|
|||
$form->title("editing $page");
|
||||
}
|
||||
|
||||
$form->tmpl_param("can_commit", $config{svn});
|
||||
$form->tmpl_param("indexlink", indexlink());
|
||||
print $form->render(submit => \@buttons);
|
||||
}
|
||||
else {
|
||||
|
@ -1193,9 +1195,14 @@ sub cgi_editpage ($$) { #{{{
|
|||
$form->field("rcsinfo"));
|
||||
|
||||
if (defined $conflict) {
|
||||
$form->field(name => "rcsinfo", value => rcs_prepedit($file),
|
||||
force => 1);
|
||||
$form->tmpl_param("page_conflict", 1);
|
||||
$form->field("content", $conflict);
|
||||
$form->field("content", value => $conflict, force => 1);
|
||||
$form->field("do", "edit)");
|
||||
$form->tmpl_param("page_select", 0);
|
||||
$form->field(name => "page", type => 'hidden');
|
||||
$form->title("editing $page");
|
||||
print $form->render(submit => \@buttons);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
<TMPL_IF NAME="PAGE_CONFLICT">
|
||||
<p>
|
||||
<b>Your changes confict with other changes made to the page.</b>
|
||||
</p>
|
||||
<p>
|
||||
Conflict markers have been inserted into the page content. Reconcile the
|
||||
confict and commit again to save your changes.
|
||||
</p>
|
||||
|
@ -12,6 +14,7 @@ confict and commit again to save your changes.
|
|||
<h1><TMPL_VAR INDEXLINK>/ <TMPL_VAR FORM-TITLE></h1>
|
||||
<TMPL_VAR FIELD-DO>
|
||||
<TMPL_VAR FIELD-FROM>
|
||||
<TMPL_VAR FIELD-RCSINFO>
|
||||
<TMPL_IF NAME="PAGE_SELECT">
|
||||
Page location: <TMPL_VAR FIELD-PAGE><br>
|
||||
<TMPL_ELSE>
|
||||
|
|
Loading…
Reference in New Issue