/[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.2 - (show annotations) (download)
Mon Nov 10 03:26:23 2008 UTC (16 years, 5 months ago) by wakaba
Branch: MAIN
Changes since 1.1: +1 -1 lines
++ swe/lib/SWE/DB/ChangeLog	10 Nov 2008 03:26:13 -0000
2008-11-10  Wakaba  <wakaba@suika.fam.cx>

	* VersionControl.pm (commit_changes): Set "-kb" option to the "cvs
	add" command to avoid keyword substition and newline
	normalization.

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', '-kb', $_);
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