Re: [Tailor] darcs patch: bzr-prevent-PathsNotVersionedError

2009-04-09 Thread Daniel Hahler
Lele Gaifax wrote:

  Fri Mar 27 23:40:12 CET 2009  tailor-t...@thequod.de
* bzr-prevent-PathsNotVersionedError
This prevents a PathsNotVersionedError exception when using cvs =
  bzr and it tries to remove files which had been removed in the
  previous commit already. I have the full log available - which you
  probably want to see. I think this should get catched/handled not in
  the target implementation, but more central - but I have not enough
  knowledge of the tailor source and this works for my case.
 
  hunk ./vcpx/repository/bzr.py 393
   if entries:
   entries = [normpath(entry) for entry in entries]
 
  +# Filter out unversioned files (to prevent
  PathsNotVersionedError) +if entries:
  +self._working_tree.lock_write()
  +try:
  +entries = [name for name in entries if name not in
  self._working_tree.filter_unversioned_files(entries)] +   
  finally:
  +self._working_tree.unlock()
  +
   self._working_tree.commit(logmessage, committer=author,
 specific_files=entries,

  verbose=self.repository.projectref().verbose,

 This seems wrong to me, but OTOH I haven't checked
 filter_unversioned_files() so I'm not sure: in the way it's written,
 that function gets called once for each name in entries, passing it
 the same (unchanged!) list every time.

 Could you please check if the following works?

Well, I've thought Python would not evaluate the list each time.

Anyway, your improvement makes sense, but I fear that the patch
is wrong still: it appears to filter out files that just have
been deleted/removed?!

I'm not sure, but that just happened during a sync (note that the removal of 
_zip_archives.class.php has not been 
committed):
13:40:07 [I] Applying pending upstream changesets
13:40:07 [I] Changeset #1
13:40:07 [I] Changeset 2009-04-08 11:33:55 by tblue246
13:40:07 [I] Log message: Renaming file _zip_archives.class.php back to 
_zip_archives.php to prevent inclusion into 
the autogenerated __autoload() list (when it gets regenerated).
13:40:11 [I] /home/lp-cron/var/tailor/b2evo/cvs $ cvs -f -d 
:pserver:anonym...@evocms.cvs.sourceforge.net:/cvsroot/evocms -q update -d -P 
-r 1.2 
blogs/inc/_ext/_zip_archives.class.php
13:40:12 [I] [Ok]
13:40:12 [I] /home/lp-cron/var/tailor/b2evo/cvs $ cvs -f -d 
:pserver:anonym...@evocms.cvs.sourceforge.net:/cvsroot/evocms -q update -d -P 
-r 1.5 blogs/inc/_ext/_zip_archives.php
13:40:14 [I] [Ok]
13:40:14 [I] /home/lp-cron/var/tailor/b2evo/cvs $ cvs -f -d 
:pserver:anonym...@evocms.cvs.sourceforge.net:/cvsroot/evocms -q update -d -P 
-r 1.14 
blogs/inc/_core/_class5.funcs.php
13:40:15 [I] [Ok]
13:40:15 [I] /home/lp-cron/var/tailor/b2evo/cvs $ cvs -f -d 
:pserver:anonym...@evocms.cvs.sourceforge.net:/cvsroot/evocms -q update -d -P 
-r 1.27 blogs/inc/files/files.ctrl.php
13:40:17 [I] [Ok]
13:40:17 [I] $ rsync --archive --exclude CVS --exclude .bzr 
/home/lp-cron/var/tailor/b2evo/cvs/ /home/lp-
cron/var/tailor/b2evo/bzr
13:40:19 [I] [Ok]
13:40:19 [I] Removing blogs/inc/_ext/_zip_archives.class.php...
13:40:19 [I] removed blogs/inc/_ext/_zip_archives.class.php
13:40:19 [I] Committing u'[b2evolution @ 2009-04-08 11:33:55 by tblue246]'...
13:40:19 [I] Committing to: /home/lp-cron/var/tailor/b2evo/bzr/
13:40:20 [I] modified blogs/inc/_core/_class5.funcs.php
13:40:20 [I] added blogs/inc/_ext/_zip_archives.php
13:40:20 [I] modified blogs/inc/files/files.ctrl.php
13:40:20 [I] deleted blogs/inc/_ext/_zip_archives.php
13:40:20 [I] Committed revision 7037.

I'm not sure, if the patch is really the problem here (have not investigated
yet), but it really looks like that.

 Also, does it really need to be a write lock?

Yes, IIRC something complained about using a write lock, but that might
have been before changing code.
This needs to get checked with the final patch.

Do you have any idea what may be going on here?
Is a removed file (before committing it) in filter_unversioned_files?

I will check this / investigate in the next days, but it would be
great if somebody would have some answer(s) already.. :)


Thanks,
Daniel

-- 
http://daniel.hahler.de/


signature.asc
Description: This is a digitally signed message part.
___
Tailor mailing list
Tailor@lists.zooko.com
http://lists.zooko.com/mailman/listinfo/tailor


Re: [Tailor] darcs patch: bzr-prevent-PathsNotVersionedError

2009-04-01 Thread Lele Gaifax
On Fri, 27 Mar 2009 23:45:13 +0100 (CET)
tailor-t...@thequod.de wrote:

 Fri Mar 27 23:40:12 CET 2009  tailor-t...@thequod.de
   * bzr-prevent-PathsNotVersionedError
   This prevents a PathsNotVersionedError exception when using cvs =
 bzr and it tries to remove files which had been removed in the
 previous commit already. I have the full log available - which you
 probably want to see. I think this should get catched/handled not in
 the target implementation, but more central - but I have not enough
 knowledge of the tailor source and this works for my case.
 
 hunk ./vcpx/repository/bzr.py 393
  if entries:
  entries = [normpath(entry) for entry in entries]
  
 +# Filter out unversioned files (to prevent PathsNotVersionedError)
 +if entries:
 +self._working_tree.lock_write()
 +try:
 +entries = [name for name in entries if name not in 
 self._working_tree.filter_unversioned_files(entries)]
 +finally:
 +self._working_tree.unlock()
 +
  self._working_tree.commit(logmessage, committer=author,
specific_files=entries,

 verbose=self.repository.projectref().verbose,

This seems wrong to me, but OTOH I haven't checked
filter_unversioned_files() so I'm not sure: in the way it's written,
that function gets called once for each name in entries, passing it
the same (unchanged!) list every time.

Could you please check if the following works?

hunk ./vcpx/repository/bzr.py 393
 if entries:
 entries = [normpath(entry) for entry in entries]
 
+# Filter out unversioned files (to prevent PathsNotVersionedError)
+self._working_tree.lock_write()
+try:
+unversioned = 
self._working_tree.filter_unversioned_files(entries)
+finally:
+self._working_tree.unlock()
+entries = [name for name in entries if name not in unversioned]
+
 self._working_tree.commit(logmessage, committer=author,
   specific_files=entries,
   verbose=self.repository.projectref().verbose,

Also, does it really need to be a write lock?

thank you,
ciao, lele.
-- 
nickname: Lele Gaifax| Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas| comincerò ad aver paura di chi mi copia.
l...@nautilus.homeip.net | -- Fortunato Depero, 1929.
___
Tailor mailing list
Tailor@lists.zooko.com
http://lists.zooko.com/mailman/listinfo/tailor