/[suikacvs]/webroot/swe/lib/SWE/DB/VersionControl.pm
Suika

Contents of /webroot/swe/lib/SWE/DB/VersionControl.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Sun Nov 9 14:08:58 2008 UTC (16 years, 5 months ago) by wakaba
Branch: MAIN
++ swe/lib/SWE/DB/ChangeLog	9 Nov 2008 14:08:47 -0000
	* VersionControl.pm: New module.

	* HashedProps.pm, IDText.pm: Support for |version_control|
	property is added.

	* SuikaWiki3PageList.pm (_save_data): Renamed as |save_data|.  Do
	nothing if the data has not been loaded from the file.
	(delete_data): New method.

2008-11-09  Wakaba  <wakaba@suika.fam.cx>

1 wakaba 1.1 package SWE::DB::VersionControl;
2     use strict;
3    
4     sub new ($) {
5     my $self = bless {
6     added_directories => {},
7     added_files => {},
8     modified_files => {},
9     }, shift;
10     return $self;
11     } # new
12    
13     sub add_directory ($$) {
14     my $self = shift;
15     my $directory_name = shift;
16     $self->{added_directories}->{$directory_name} = 1;
17     } # add_directory
18    
19     sub add_file ($$) {
20     my $self = shift;
21     my $file_name = shift;
22     $self->{added_files}->{$file_name} = 1;
23     $self->{modified_files}->{$file_name} = 1;
24     } # add_file
25    
26     sub write_file ($$) {
27     my $self = shift;
28     my $file_name = shift;
29     $self->{modified_files}->{$file_name} = 1;
30     } # write_file
31    
32     sub commit_changes ($$) {
33     my $self = shift;
34     my $msg = shift;
35    
36     for (sort {$a cmp $b} keys %{$self->{added_directories}}) {
37     _system ('cvs', 'add', $_);
38     }
39    
40     for (keys %{$self->{added_files}}) {
41     _system ('cvs', 'add', $_);
42     }
43    
44     my @changed;
45     for (keys %{$self->{modified_files}}) {
46     push @changed, $_;
47     }
48    
49     if (@changed) {
50     _system ('cvs', 'ci', -m => $msg, @changed)
51     or die "$0: commit_changes: $?";
52     }
53     } # commit_changes
54    
55     sub _system (@) {
56     return ((system join (' ', map {quotemeta $_} @_) . " > /dev/null") == 0);
57     ## If false, see $? for exit value of the program.
58     ## TODO: If false, log the stdout/stderr...
59     } # _system
60    
61    
62     1;

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24