Gentoo Archives: gentoo-commits

From: "Christian Ruppert (idl0r)" <idl0r@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoolkit r736 - in trunk/gentoolkit-dev: . src/echangelog
Date: Mon, 01 Feb 2010 19:15:16
Message-Id: E1Nc1ju-0001NZ-C5@stork.gentoo.org
1 Author: idl0r
2 Date: 2010-02-01 19:15:14 +0000 (Mon, 01 Feb 2010)
3 New Revision: 736
4
5 Modified:
6 trunk/gentoolkit-dev/ChangeLog
7 trunk/gentoolkit-dev/src/echangelog/echangelog
8 Log:
9 echangelog: Improve vcs detection, might fix bug 302784 as well.
10
11 Modified: trunk/gentoolkit-dev/ChangeLog
12 ===================================================================
13 --- trunk/gentoolkit-dev/ChangeLog 2010-01-31 11:48:05 UTC (rev 735)
14 +++ trunk/gentoolkit-dev/ChangeLog 2010-02-01 19:15:14 UTC (rev 736)
15 @@ -1,3 +1,7 @@
16 +2010-01-02: Christian Ruppert <idl0r@g.o>
17 + src/echangelog/echangelog: Improve vcs detection, might fix bug 302784 as
18 + well.
19 +
20 2009-12-11: Christian Ruppert <idl0r@g.o>
21 src/echangelog/test/test.sh, src/echangelog/Makefile:
22 Fix bug 292932, thanks to Alexis Ballier <aballier@g.o>.
23
24 Modified: trunk/gentoolkit-dev/src/echangelog/echangelog
25 ===================================================================
26 --- trunk/gentoolkit-dev/src/echangelog/echangelog 2010-01-31 11:48:05 UTC (rev 735)
27 +++ trunk/gentoolkit-dev/src/echangelog/echangelog 2010-02-01 19:15:14 UTC (rev 736)
28 @@ -33,6 +33,7 @@
29
30 my %vcs = (
31 bzr => {
32 + directory => ".bzr",
33 diff => "bzr diff",
34 status => "bzr status -S .",
35 add => "bzr add",
36 @@ -41,6 +42,7 @@
37 regex => qr/^=== \S+ file '\S+\/\S+\/((\S+)\.ebuild)/
38 },
39 cvs => {
40 + directory => "CVS",
41 diff => "cvs -f diff -U0",
42 status => "cvs -fn up",
43 add => "cvs -f add",
44 @@ -48,6 +50,7 @@
45 regex => qr/^Index: (([^\/]*?)\.ebuild)\s*$/
46 },
47 git => {
48 + directory => ".git",
49 diff => "git diff",
50 status => "git diff-index HEAD --name-status",
51 add => "git add",
52 @@ -57,6 +60,7 @@
53 regex => qr/^diff \-\-git \S*\/((\S*)\.ebuild)/
54 },
55 hg => {
56 + directory => ".hg",
57 diff => "hg diff",
58 status => "hg status .",
59 add => "hg add",
60 @@ -66,6 +70,7 @@
61 regex => qr/diff \-r \S+ \S+\/\S+\/((\S+)\.ebuild)/
62 },
63 svn => {
64 + directory => ".svn",
65 diff => "svn diff -N",
66 status => "svn status",
67 add => "svn add",
68 @@ -175,6 +180,21 @@
69 return $t;
70 }
71
72 +# Check partent dirs recursivevly/backward
73 +sub check_vcs_dir {
74 + my $type = shift;
75 +
76 + my $dir = getcwd();
77 + while($dir !~ /^\/$/) {
78 + return 1 if -d "${dir}/${type}";
79 + $dir = dirname($dir);
80 + }
81 + # Check / as well
82 + return 1 if -d "/${type}";
83 +
84 + return 0;
85 +}
86 +
87 # Just to ensure we don't get duplicate entries.
88 sub mypush(\@@) {
89 my $aref = shift;
90 @@ -203,32 +223,13 @@
91 # Respect $PATH while looking for the VCS
92 if (getenv("PATH")) {
93 foreach my $path ( split(":", getenv("PATH")) ) {
94 - if ( -X "${path}/bzr" ) {
95 - open(BZR, '-|', "${path}/bzr root 2>/dev/null");
96 - $vcs = "bzr" if defined(<BZR>);
97 - close(BZR);
98 - last if $vcs;
99 + foreach my $_vcs (keys(%vcs)) {
100 + if ( -X "${path}/${_vcs}" ) {
101 + $vcs = $_vcs if check_vcs_dir($vcs{$_vcs}{directory});
102 + last if $vcs;
103 + }
104 }
105 - if ( -X "${path}/cvs" ) {
106 - $vcs = "cvs" if -d "CVS";
107 - last if $vcs;
108 - }
109 - if ( -X "${path}/git" ) {
110 - open(GIT, '-|', "${path}/git rev-parse --git-dir 2>/dev/null");
111 - $vcs = "git" if defined(<GIT>);
112 - close(GIT);
113 - last if $vcs;
114 - }
115 - if ( -X "${path}/hg" ) {
116 - open(HG, '-|', "${path}/hg root 2>/dev/null");
117 - $vcs = "hg" if defined(<HG>);
118 - close(HG);
119 - last if $vcs;
120 - }
121 - if ( -X "${path}/svn" ) {
122 - $vcs = "svn" if -d ".svn";
123 - last if $vcs;
124 - }
125 + last if $vcs;
126 }
127 }
128
129 @@ -305,7 +306,7 @@
130 }
131 }
132 if (/^C\s+(\S+)/) {
133 - # TODO: The git part here might be unused
134 + # NOTE: The git part here might be unused
135 if($vcs eq "git") {
136 my $filename = $1;
137 $filename =~ /\S*\/(\S*)/;