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*)/; |