new marks file format not supported
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar Fast Import |
Fix Released
|
Medium
|
Jelmer Vernooij |
Bug Description
Hi!
The following script results in a traceback from bzr-fastimport. This is a minimal test case of what the git-bzr code is doing.
Thanks,
Ryan
rm -fr bzr-temp git-temp
mkdir bzr-temp
cd bzr-temp
bzr init
touch a
bzr add a
bzr commit -m "yep"
cd ..
mkdir git-temp
cd git-temp
git init
bzr fast-export --export-
git fast-import --export-
git checkout -b local_branch bzr/upstream
touch b
git add b
git commit -m "yepppppppppp"
git fast-export --import-
cd ../bzr-temp
bzr fast-import --import-
Gonéri Le Bouder (goneri) wrote : | #1 |
Changed in bzr-fastimport: | |
assignee: | nobody → Gonéri Le Bouder (goneri) |
status: | New → Fix Committed |
Ian Clatworthy (ian-clatworthy) wrote : | #2 |
I had to back out this fix as it was making fast-export produce bad output. I'll try changing how marks are input/out as I think that's actually the core problem.
Changed in bzr-fastimport: | |
status: | Fix Committed → Confirmed |
Ian Clatworthy (ian-clatworthy) wrote : | #3 |
Please try the ~ian-clatworthy
Changed in bzr-fastimport: | |
status: | Confirmed → Fix Committed |
Ryan Niebur (ryan52) wrote : | #4 |
hm, I installed from that branch, but now bzr gives me this error:
Unable to load plugin 'fastimport' from '/usr/lib/
Ryan Niebur (ryan52) wrote : | #5 |
fwiw, I get this error:
bash jade master# git-temp $ python /usr/lib/
Traceback (most recent call last):
File "/usr/lib/
class cmd_fast_
File "/usr/lib/
value_
TypeError: __init__() got an unexpected keyword argument 'lazy_registry'
bash jade master# git-temp $
Ian Clatworthy (ian-clatworthy) wrote : Re: [Bug 347729] Re: git-bzr doesn't work | #6 |
Ryan Niebur wrote:
> fwiw, I get this error:
>
> bash jade master# git-temp $ python /usr/lib/
> Traceback (most recent call last):
> File "/usr/lib/
> class cmd_fast_
> File "/usr/lib/
> value_switches=
> TypeError: __init__() got an unexpected keyword argument 'lazy_registry'
> bash jade master# git-temp $
>
What version of Bazaar are you running?
Ian C.
Ryan Niebur (ryan52) wrote : | #7 |
On Sun, Aug 23, 2009 at 10:48:12PM -0000, Ian Clatworthy wrote:
> Ryan Niebur wrote:
> > fwiw, I get this error:
> >
> > bash jade master# git-temp $ python /usr/lib/
> > Traceback (most recent call last):
> > File "/usr/lib/
> > class cmd_fast_
> > File "/usr/lib/
> > value_switches=
> > TypeError: __init__() got an unexpected keyword argument 'lazy_registry'
> > bash jade master# git-temp $
> >
>
> What version of Bazaar are you running?
>
1.5. that's old...I'll upgrade and retry in a bit.
--
_______
Ryan Niebur
<email address hidden>
Ryan Niebur (ryan52) wrote : Re: git-bzr doesn't work | #8 |
okay, upgrading bzr made the plugin load. now I have this problem:
bash jade bzr-temp $ bzr fast-import --import-
16:49:35 Collecting statistics ...
16:49:35 Starting import ...
bzr: ERROR: exceptions.
Traceback (most recent call last):
File "/usr/lib/
return the_callable(*args, **kwargs)
File "/usr/lib/
ret = run(*run_argv)
File "/usr/lib/
return self.run(
File "/usr/lib/
params, verbose)
File "/usr/lib/
return proc.process(
File "/usr/lib/
self.
File "/usr/lib/
processor.
File "/usr/lib/
self.
File "/usr/lib/
self.
KeyError: 0
bzr 1.17 on python 2.5.4 (linux2)
arguments: ['/usr/bin/bzr', 'fast-import', '--import-
encoding: 'UTF-8', fsenc: 'UTF-8', lang: 'en_US.UTF-8'
plugins:
bzrtools /usr/lib/
fastimport /usr/lib/
launchpad /usr/lib/
netrc_
rebase /usr/lib/
*** Bazaar has encountered an internal error.
Please report a bug at https:/
including this traceback, and a description of what you
were doing when the error occurred.
bash jade bzr-temp $
Gonéri Le Bouder (goneri) wrote : | #9 |
Ian,
Do you remember what was the problem with my patch?
Matthew Brett (matthew-brett) wrote : | #10 |
With bzr 2.0.2 and current trunk (rev 268(, Ryan's script (and the several git-bzr scripts, which use the same idea) still crash with:
ABORT: exception occurred processing commit :3
bzr: ERROR: exceptions.
Traceback (most recent call last):
File "/Library/
return the_callable(*args, **kwargs)
File "/Library/
ret = run(*run_argv)
File "/Library/
return self.run(
File "/Users/
params, verbose, user_map=user_map)
File "/Users/
return proc.process(
File "/Users/
self.
File "/Users/
processor.
File "/Users/
handler(self, cmd)
File "/Users/
handler.
File "/Users/
self.
File "/Users/
super(
File "/Users/
for p in parents]
KeyError: ':1'
bzr 2.0.2 on python 2.6.1 (Darwin-
arguments: ['/usr/
I can code in python - is there anything I can do to help fix this problem?
Thanks a lot,
Matthew
SirVer (sirver) wrote : | #11 |
I have the same problems at the same setup. I take the freedom to open this bug again, because it seems to be not fixed.
Changed in bzr-fastimport: | |
status: | Fix Committed → Confirmed |
SirVer (sirver) wrote : | #12 |
- push_back_once.patch Edit (344 bytes, text/x-diff)
I had a little longer look into this and I think the problem is with some colomns (:). I am not aware of how the fast-import file format should look like, but the attached patch allows me to push back to bzr from git exactly once. Note though that pulling further changes from bzr doesn't work:
bzr$ bzr commit -m "Latest"
bzr$ cd ../git
git$ git bzr fetch origin # this works
hack hack
git$ git -am "Some commit" && git bzr push origin # This works with the attached patch
git$ cd ../bzr
hack hack
bzr$ bzr commit -m "More bzr changes"
bzr$ cd ../git
git$ git bzr fetch origin # This fails. But removing the bzr marks file (which makes bzr reexport everything) and repeating suceeds.
I am a bit lost here and I would need someone with more insight for coaching.
SirVer (sirver) wrote : | #13 |
Damn.. always forgetting something :(. It seems as if git is exporting it's refids always with a colum ":1", ":2" while bzr expects them (and exports them) without "1","2", "3". Hope this helps someone helping us.
Gabriel Filion (gabriel-filion) wrote : | #14 |
just a small hint: could this be caused by the fact that git actually doesn't store empty files in commits (thus not finding anything that points to the example commits made in the first example of this bug report -- touch a, bzr add a, bzr commit)?
SirVer (sirver) wrote : | #15 |
Gabriel, while you are right that this is a bug in the report (because git doesn't track empty files), the error goes deeper than that. My bug description (#12) is still persistent with or without my patch.
Matthew Brett (matthew-brett) wrote : Re: [Bug 347729] Re: git-bzr doesn't work | #16 |
Hi,
On Wed, Feb 10, 2010 at 8:59 AM, Gabriel Filion
<email address hidden> wrote:
> just a small hint: could this be caused by the fact that git actually
> doesn't store empty files in commits (thus not finding anything that
> points to the example commits made in the first example of this bug
> report -- touch a, bzr add a, bzr commit)?
Do you mean, that bzr fastimport cannot deal with empty git commits?
Is this a bug or a feature?
Thanks a lot,
Matthew
John A Meinel (jameinel) wrote : | #17 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Matthew Brett wrote:
> Hi,
>
> On Wed, Feb 10, 2010 at 8:59 AM, Gabriel Filion
> <email address hidden> wrote:
>> just a small hint: could this be caused by the fact that git actually
>> doesn't store empty files in commits (thus not finding anything that
>> points to the example commits made in the first example of this bug
>> report -- touch a, bzr add a, bzr commit)?
>
> Do you mean, that bzr fastimport cannot deal with empty git commits?
> Is this a bug or a feature?
>
> Thanks a lot,
>
> Matthew
>
So if you add an empty file, which cannot be tracked in git, and commit
it, I would guess that you would get a new Commit object, but not a new
Tree object. I don't know if git would refuse a new Commit without a new
Tree, but I would think it would support importing that. (After all, you
could always be reverting back to a previous state, which is identical
as well.)
John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://
iEYEARECAAYFAkt
/1UAn12W+
=szdz
-----END PGP SIGNATURE-----
Miklos Vajna (vmiklos) wrote : | #18 |
On Wed, Feb 10, 2010 at 05:46:59PM -0000, SirVer <email address hidden> wrote:
> Gabriel, while you are right that this is a bug in the report (because
> git doesn't track empty files), the error goes deeper than that. My bug
> description (#12) is still persistent with or without my patch.
Exactly, this has nothing with empty files. Anyway git *does* track
empty files, it just doesn't track empty directories.
Regarding "how should it look like", it's up to the given
vcs-fast-
FWIW both git and darcs implementations use: one ":foo bar" / line,
where foo is an int (mark number) and bar is the (persistent) id of the
commit/patch.
Xavier (Open ERP) (xmo-deactivatedaccount) wrote : Re: git-bzr doesn't work | #19 |
Broken as well in here, using kfish's git-bzr (http://
$ git bzr push $remote
11:04:16 Starting import ...
Could not import marks file .git/bzr-
ABORT: exception occurred processing commit :3410
bzr: ERROR: exceptions.
Traceback (most recent call last):
File "/opt/local/
return the_callable(*args, **kwargs)
File "/opt/local/
ret = run(*run_argv)
File "/opt/local/
return self.run_
File "/opt/local/
return self._operation
File "/opt/local/
self.cleanups, self.func, *args, **kwargs)
File "/opt/local/
result = func(*args, **kwargs)
File "/opt/local/
params, verbose, user_map=user_map)
File "/opt/local/
return proc.process(
File "/opt/local/
self.
File "/opt/local/
processor.
File "/opt/local/
handler(self, cmd)
File "/opt/local/
handler.
File "/opt/local/
self.
File "/opt/local/
super(
File "/opt/local/
Ricky (rickyr) wrote : | #20 |
This thread seems to have gone quiet, but the attached push_back_
Vasil Dimov (vasild) wrote : | #21 |
I am also experiencing the exact same problem.
bzr 2.1.1
fastimport 0.9.0
git 1.7.0.6
Vasil Dimov (vasild) wrote : | #22 |
Very easy to repeat, please fix this:
hag:~$ bzr --version
Bazaar (bzr) 2.1.1
Python interpreter: /usr/local/
Python standard library: /usr/local/
Platform: FreeBSD-
bzrlib: /usr/local/
Bazaar configuration: /usr/home/
Bazaar log file: /usr/home/
Copyright 2005-2010 Canonical Ltd.
http://
bzr comes with ABSOLUTELY NO WARRANTY. bzr is free software, and
you may use, modify and redistribute it under the terms of the GNU
General Public License version 2 or later.
Bazaar is part of the GNU Project to produce a free operating system.
hag:~/.
Using saved parent location: bzr+ssh:
... No revisions to pull.
hag:~/.
Wed May 5 20:33:25 EEST 2010
hag:/tmp/t/g$ git --version
git version 1.7.0.6
hag:/tmp$ mkdir t
hag:/tmp$ cd t
hag:/tmp/t$ mkdir b
hag:/tmp/t$ cd b
hag:/tmp/t/b$ bzr init
... bzr output ...
hag:/tmp/t/b$ echo foo > f
hag:/tmp/t/b$ bzr add f
adding f
hag:/tmp/t/b$ bzr commit -m 'add f'
... bzr output ...
hag:/tmp/t/b$ echo bar >> f
hag:/tmp/t/b$ bzr commit -m 'add bar'
... bzr output ...
hag:/tmp/t/b$ cd ..
hag:/tmp/t$ mkdir g
hag:/tmp/t$ cd g
hag:/tmp/t/g$ git init
Initialized empty Git repository in /tmp/t/g/.git/
hag:/tmp/t/g$ git bzr add b_remote /tmp/t/b
+ gitbzr_version=1.2
+ return=
+ gitbzr_run add b_remote /tmp/t/b
+ '[' 3 -lt 2 ']'
+ cmd=add
+ shift
+ args='b_remote /tmp/t/b'
+ '[' xadd '!=' xhelp ']'
+ git rev-parse
+ '[' 0 -ne 0 ']'
++ git rev-parse --show-cdup
+ up=
+ '[' x == x ']'
+ up=.
+ cd .
+ case $cmd in
+ gitbzr_add b_remote /tmp/t/b
+ '[' 2 -lt 2 ']'
+ name=b_remote
+ location=/tmp/t/b
+ [[ -z b_remote /tmp/t/b ]]
++ git remote show
++ grep -q '"b_remote"'
+ '[' -n '' ']'
++ git config git-bzr.
+ '[' -n '' ']'
+ bzr info -q /tmp/t/b
+ git config git-bzr.
+ echo -e 'Bazaar branch b_remote added.\nYou can fetch it with '\''git bzr fetch b_remote'\''.'
Bazaar branch b_remote added.
You can fetch it with 'git bzr fetch b_remote'.
hag:/tmp/t/g$ git bzr fetch b_remote
+ gitbzr_version=1.2
+ return=
+ gitbzr_run fetch b_remote
+ '[' 2 -lt 2 ']'
+ cmd=fetch
+ shift
+ args=b_remote
+ '[' xfetch '!=' xhelp ']'
+ git rev-parse
+ '[' 0 -ne 0 ']'
++ git rev-parse --show-cdup
+ up=
+ '[' x == x ']'
+ up=.
+ cd .
+ case $cmd in
+ gitbzr_fetch b_remote
+ '[' 1 -lt 1 ']'
++ gitbzr_
+++ git rev-parse --git-dir
++ gitdir=.git
++ '[' -e .git ']'
+++ realpath .git
++ gitdir=
++ echo /tmp/t/g/.git
+ gitdir=
+ remote=b_remote
+ shift
+ args=
+ '[' -z b_remote ']'
+ get_location b_remote
+ '[' 1 -lt 1 ']'
+ remote=b_remote
+ shift
+ args=
++ git config git-bzr.
+ l=/tmp/t/b
+ '[' -z /tmp/t/b ']'
+ return=/tmp/t/b
+ location=/tmp/t/b
+ git_map=
+ bzr_map=
+ '[' '!' -f /tmp/t/
+ echo 'There doesn'\''t seem to be an existing refma...
Vasil Dimov (vasild) wrote : | #23 |
Just the commands to reproduce (without the output):
(assuming you do not have a directory called /tmp/t)
cd /tmp
mkdir t
cd t
mkdir b
cd b
bzr init
echo foo > f
bzr add f
bzr commit -m 'add f'
echo bar >> f
bzr commit -m 'add bar'
cd ..
mkdir g
cd g
git init
git config git-bzr.
mkdir -p /tmp/t/
bzr fast-export --export-
git branch b_local b_remote
git checkout b_local
echo baz >> f
git commit -a -m 'add baz'
git fast-export --import-
Vasil Dimov (vasild) wrote : | #24 |
Hello? Anybody hear me?
Silex (pvaucher) wrote : | #25 |
Yes, anyone knows what causes the bug?
Would it be as easy as fixing some internal format bzr/git uses?
Vasil Dimov (vasild) wrote : | #26 |
Silex, yes - there is an inconsistency in the bzr export/import parsing of "marks".
If I do
sed 's/^([0-9]+) /:\1 /'
on /tmp/t/
The file is created by bzr without leading ":" while on import it expects the marks to have leading ":".
Miklos Vajna (vmiklos) wrote : Re: [Bug 347729] Re: git-bzr doesn't work | #27 |
On Wed, May 19, 2010 at 02:34:58PM -0000, Vasil Dimov <email address hidden> wrote:
> Silex, yes - there is an inconsistency in the bzr export/import parsing of "marks".
> If I do
>
> sed 's/^([0-9]+) /:\1 /'
>
> on /tmp/t/
> then it works.
>
> The file is created by bzr without leading ":" while on import it
> expects the marks to have leading ":".
In fact it could be whatever, just be consistent. ;)
Though git-fast-
bzr would be a good idea as well.
Silex (pvaucher) wrote : Re: git-bzr doesn't work | #28 |
So the fix is trivial and nobody fixed it in git-bzr repository? Shame on you! :)
That said, I'll propose a patch once I have a little bit of time on my hands, if the proposed substition above works.
Matthew Brett (matthew-brett) wrote : | #29 |
It looks like the main problem then is the lack of colons ':' in the bzr mark file. I patched my python git-bzr script with a colon filter routine, and it seems to work for basic use (example script in http://
Matthew Brett (matthew-brett) wrote : | #30 |
Just for information, here's an expanded version of Ryan's original script showing that, we need to add colons to the marks read by bzr fast-import, but the colons need to be absent for bzr fast-export to work:
mkdir bzr-temp
cd bzr-temp
bzr init
touch a
bzr add a
bzr commit -m "yep"
cd ..
mkdir git-temp
cd git-temp
git init
bzr fast-export --export-
git fast-import --export-
git checkout -b local_branch bzr/upstream
touch b
git add b
git commit -m "yepppppppppp"
git fast-export --import-
sed 's/^\([0-9][0-9]* \)/:\1/' .git/bzr-upstream > .git/bzr-
cd ..
cd bzr-temp
bzr fast-import --import-
echo 'something' > c
bzr add c
bzr commit -m 'adding c'
cd ..
cd git-temp
bzr fast-export --import-
git fast-import --export-
Vasil Dimov (vasild) wrote : | #31 |
Hello?
Jelmer Vernooij (jelmer) wrote : | #32 |
Has anybody tried Ian's new-marks-format branch ?
Changed in bzr-fastimport: | |
status: | Confirmed → Fix Committed |
Vasil Dimov (vasild) wrote : | #33 |
Hi Jelmer, where is that branch? I will try it.
This is not yet fixed in bzr+ssh:
Thanks!
Jelmer Vernooij (jelmer) wrote : Re: [Bug 347729] Re: git-bzr doesn't work | #34 |
On Tue, 2010-07-27 at 19:42 +0000, Vasil Dimov wrote:
> Hi Jelmer, where is that branch? I will try it.
>
> This is not yet fixed in bzr+ssh:
> fastimport/trunk/
It's linked on the bug page.
Cheers,
Jelmer
Vasil Dimov (vasild) wrote : Re: git-bzr doesn't work | #35 |
I can't find it from here: https:/
Please post the exact URL.
Gabriel Filion (gabriel-filion) wrote : | #36 |
Jelmer:
I just tried out the branch lp:~ian-clatworthy/bzr-fastimport/new-marks-format
and I still get an error. but it's a different one this time:
bzr: ERROR: exceptions.
Traceback (most recent call last):
File "/usr/lib/
return the_callable(*args, **kwargs)
File "/usr/lib/
ret = run(*run_argv)
File "/usr/lib/
return self.run_
File "/usr/lib/
return self._operation
File "/usr/lib/
self.cleanups, self.func, *args, **kwargs)
File "/usr/lib/
result = func(*args, **kwargs)
File "/home/
params, verbose)
File "/home/
return proc.process(
File "/home/
self.
File "/home/
processor.
File "/home/
self.
File "/home/
self.
KeyError: 0
bzr 2.1.2 on python 2.5.4 (Linux-
arguments: ['/usr/bin/bzr', 'fast-import', '--import-
encoding: 'UTF-8', fsenc: 'UTF-8', lang: 'en_CA.UTF-8'
plugins:
bzrtools /usr/lib/
fastimport /home/gabster/
launchpad /usr/lib/
netrc_
news_merge /usr/lib/
*** Bazaar has encountered an internal error. This probably indicates a
bug in Bazaar. You can help us fix it by filing a bug report at
https:/
including this traceback and a description of the problem.
No new revisions to push.
In the file processors/
also, cache_mgr is expecting a dictionary of revisions in revsion_ids. I tried changing line 134 to "self.cache_m...
Jelmer Vernooij (jelmer) wrote : Re: [Bug 347729] Re: git-bzr doesn't work | #37 |
On Thu, 2010-07-29 at 09:33 +0000, Vasil Dimov wrote:
> I can't find it from here: https:/
> Please post the exact URL.
That's the overall bug page, it's linked on the top of the page for this
specific bug, https:/
Gabriel Filion (gabriel-filion) wrote : Re: git-bzr doesn't work | #38 |
OK, I was really missing something: I wasn't giving 'git fast-export' a ref to export..
So, I confirm that with the modification that I mentioned on Ian Clatworthy's "new-marks-format" branch, bzr fast-import is working correctly.
To make it easier to review, here's a diff of the modification on the branch:
=== modified file 'processors/
--- processors/
+++ processors/
@@ -131,7 +131,7 @@
if self.params.
if mark_info is not None:
- self.cache_
+ self.cache_
else:
Gabriel Filion (gabriel-filion) wrote : | #39 |
- bzr crash report, another KeyError Edit (37.7 KiB, text/plain)
I continued playing with Ian's branch + my patch and I encountered another very similar bug. I'll report it here since it's touching on the same subject (namely, changing the mark_file format to a consistant one between import and export). I'm attaching a crash report from bzr that shows what is happening.
I guess that not all cases were modified to honor the new format.
Gabriel Filion (gabriel-filion) wrote : | #40 |
I performed some more testing and I was able to reproduce scenarios that are working and those that hit the bug that I mentioned in my last message.
What is working:
git fast-export master | bzr fast-import - local/dst/branch # no marks file imported
the same scenario but with --import-mark as a marks file that was previously created by bzr fast-import
What is not working:
using a marks file with bzr fast-import that was created by bzr fast-export
I found the following differences in contents in the mark files between the scenarios:
Here's an extract of a marks file generated by the bzr fast-export command:
:1 guillaume@
:2 <email address hidden>
:3 <email address hidden>
:4 <email address hidden>
:5 <email address hidden>
:6 <email address hidden>
Here's an extract of a marks file generated by the bzr fast-import command (sorted out, it comes out in another random order):
::1 guillaume@
::2 <email address hidden>
::3 <email address hidden>
::4 <email address hidden>
::5 <email address hidden>
::6 <email address hidden>
So there's still (in Ian's branch) a difference between mark files generated (and expected) by both commands.
Changed in bzr-fastimport: | |
status: | Fix Committed → Confirmed |
Gabriel Filion (gabriel-filion) wrote : | #41 |
I've put the status back to Confirmed since trunk is still affected, the "push_back_
I also tried replaying Ian's modification about changing the marks file format on top of trunk and the situation is the same. I get the error in generic_
bzr: ERROR: exceptions.
Traceback (most recent call last):
File "/usr/lib/
return the_callable(*args, **kwargs)
File "/usr/lib/
ret = run(*run_argv)
File "/usr/lib/
return self.run_
File "/usr/lib/
return self._operation
File "/usr/lib/
self.cleanups, self.func, *args, **kwargs)
File "/usr/lib/
result = func(*args, **kwargs)
File "/home/
params, verbose, user_map=user_map)
File "/home/
return proc.process(
File "/home/
self.
File "/home/
processor.
File "/home/
handler(self, cmd)
File "/home/
handler.
File "/home/
self.
File "/home/
self.
File "/home/
[(r,) for r in rev.parent_ids])
File "/usr/lib/
parent_map, missing_keys = self._index.
File "/usr/lib/
return self._graph_
File "/usr/lib/
search_keys = index._
AttributeError: 'InMemoryGraphI
bzr 2.1.2 on python 2.6.6 (Linux-
arguments: ['/usr/bin/bzr', 'fast-import', '--e...
Jelmer Vernooij (jelmer) wrote : | #42 |
Gabriel, that's bug 541626.
Jelmer Vernooij (jelmer) wrote : | #43 |
I've merged Ian's branch and Gabriel's improvement to it. If you find any other bugs, please open separate bug reports.
summary: |
- git-bzr doesn't work + new marks file format not supported |
Changed in bzr-fastimport: | |
status: | Confirmed → Fix Committed |
importance: | Undecided → Medium |
assignee: | Gonéri Le Bouder (goneri) → Jelmer Vernooij (jelmer) |
Jelmer Vernooij (jelmer) wrote : | #44 |
The _find_ancestors issue is bug 541626.
Changed in bzr-fastimport: | |
status: | Fix Committed → Fix Released |
milestone: | none → 0.10.0 |
rev 218