94
94
# revision: The revision number to update to. If not provided this
95
95
# defaults to HEAD.
97
# action=svnpublish: Set the "published" flag on a file to True.
98
# path: The path to the file to be published. Can be specified
101
# action=svnunpublish: Set the "published" flag on a file to False.
102
# path: The path to the file to be unpublished. Can be specified
105
97
# action=svncommit: Commit a file(s) or directory(s) to the repository.
106
98
# path: The path to the file or directory to be committed. Can be
107
99
# specified multiple times. Directories are committed
326
318
frompath = fields.getfirst('from')
327
319
topath = fields.getfirst('to')
328
movefile(req, frompath, topath)
320
svn = fields.getfirst('svn')
322
svn_movefile(req, frompath, topath)
324
movefile(req, frompath, topath)
330
326
def action_mkdir(req, fields):
331
327
"""Creates a directory with the given path.
580
576
Reads fields: 'path' (multiple)
582
578
paths = fields.getlist('path')
583
paths = map(lambda path: actionpath_to_local(req, path), paths)
579
paths = map(lambda path: actionpath_to_local(req, path).decode('utf-8'),
586
583
svnclient.add(paths, recurse=True, force=True)
593
590
Reads fields: 'path' (multiple)
595
592
paths = fields.getlist('path')
596
paths = map(lambda path: actionpath_to_local(req, path), paths)
593
paths = map(lambda path: actionpath_to_local(req, path).decode('utf-8'),
599
597
svnclient.remove(paths, force=True)
645
643
Reads fields: 'path' (multiple)
647
645
paths = fields.getlist('path')
648
paths = map(lambda path: actionpath_to_local(req, path), paths)
646
paths = map(lambda path: actionpath_to_local(req, path).decode('utf-8'),
651
650
svnclient.revert(paths, recurse=True)
652
651
except pysvn.ClientError, e:
653
652
raise ActionError(str(e))
655
def action_svnpublish(req, fields):
656
"""Sets svn property "ivle:published" on each file specified.
657
Should only be called on directories (only effective on directories
662
XXX Currently unused by the client (calls action_publish instead, which
663
has a completely different publishing model).
665
paths = fields.getlist('path')
667
paths = map(lambda path: actionpath_to_local(req, path), paths)
669
paths = [studpath.to_home_path(req.path)]
673
# Note: Property value doesn't matter
674
svnclient.propset("ivle:published", "", path, recurse=False)
675
except pysvn.ClientError, e:
676
raise ActionError("Directory could not be published")
678
def action_svnunpublish(req, fields):
679
"""Deletes svn property "ivle:published" on each file specified.
683
XXX Currently unused by the client (calls action_unpublish instead, which
684
has a completely different publishing model).
686
paths = fields.getlist('path')
687
paths = map(lambda path: actionpath_to_local(req, path), paths)
691
svnclient.propdel("ivle:published", path, recurse=False)
692
except pysvn.ClientError, e:
693
raise ActionError("Directory could not be unpublished")
695
654
def action_svncommit(req, fields):
696
655
"""Performs a "svn commit" to each file specified.
698
657
Reads fields: 'path' (multiple), 'logmsg' (optional)
700
659
paths = fields.getlist('path')
701
paths = map(lambda path: actionpath_to_local(req, str(path)), paths)
702
logmsg = str(fields.getfirst('logmsg', DEFAULT_LOGMESSAGE))
661
paths = map(lambda path:actionpath_to_local(req,path).decode('utf-8'),
664
paths = [studpath.to_home_path(req.path).decode('utf-8')]
665
logmsg = str(fields.getfirst('logmsg',
666
DEFAULT_LOGMESSAGE)).decode('utf-8')
703
667
if logmsg == '': logmsg = DEFAULT_LOGMESSAGE
717
681
raise ActionError("usage: svncheckout url local-path")
718
682
url = ivle.conf.svn_addr + "/" + urllib.quote(paths[0])
719
683
local_path = actionpath_to_local(req, str(paths[1]))
684
url = url.decode('utf-8')
685
local_path = local_path.decode('utf-8')
721
687
svnclient.checkout(url, local_path, recurse=True)
722
688
except pysvn.ClientError, e:
795
762
"svnupdate" : action_svnupdate,
796
763
"svnresolved" : action_svnresolved,
797
764
"svnrevert" : action_svnrevert,
798
"svnpublish" : action_svnpublish,
799
"svnunpublish" : action_svnunpublish,
800
765
"svncommit" : action_svncommit,
801
766
"svncheckout" : action_svncheckout,
802
767
"svnrepomkdir" : action_svnrepomkdir,