Shelve error: ERROR: bzrlib.errors.MalformedTransform: Tree transform is malformed

Bug #1175462 reported by Chris
44
This bug affects 7 people
Affects Status Importance Assigned to Milestone
Bazaar
Confirmed
Undecided
Unassigned

Bug Description

bzr: ERROR: bzrlib.errors.MalformedTransform: Tree transform is malformed [('missing parent', 'new-2')]

Traceback (most recent call last):
  File "C:/Program Files (x86)/Bazaar/plugins\qbzr\lib\widgets\shelve.py", line 715, in do_shelve
  File "bzrlib\shelf.pyo", line 382, in shelve_changes
  File "bzrlib\shelf.pyo", line 256, in transform
  File "bzrlib\transform.pyo", line 1730, in apply
  File "bzrlib\transform.pyo", line 554, in _check_malformed
MalformedTransform: Tree transform is malformed [('missing parent', 'new-2')]

bzr 2.5.1 on python 2.6.6 (win32)
arguments: ['C:\\Program Files (x86)\\Bazaar\\bzrw.exe', 'qshelve', '']
encoding: 'cp1252', fsenc: 'mbcs', lang: None
plugins:
  bzrtools C:\Program Files (x86)\Bazaar\plugins\bzrtools [2.5.0]
  changelog_merge C:\Program Files (x86)\Bazaar\plugins\changelog_merge [2.5.1]
  colo C:\Program Files (x86)\Bazaar\plugins\colo [0.4.0]
  explorer C:\Program Files (x86)\Bazaar\plugins\explorer [1.2.2]
  extmerge C:\Program Files (x86)\Bazaar\plugins\extmerge [unknown]
  fastimport C:\Program Files (x86)\Bazaar\plugins\fastimport [0.14.0dev]
  git C:\Program Files (x86)\Bazaar\plugins\git [0.6.8]
  launchpad C:\Program Files (x86)\Bazaar\plugins\launchpad [2.5.1]
  loom C:\Program Files (x86)\Bazaar\plugins\loom [2.3.0dev]
  netrc_credential_store C:\Program Files (x86)\Bazaar\plugins\netrc_credential_store [2.5.1]
  news_merge C:\Program Files (x86)\Bazaar\plugins\news_merge [2.5.1]
  pipeline C:\Program Files (x86)\Bazaar\plugins\pipeline [1.4.0]
  qbzr C:\Program Files (x86)\Bazaar\plugins\qbzr [0.22.3]
  rewrite C:\Program Files (x86)\Bazaar\plugins\rewrite [0.6.4dev]
  svn C:\Program Files (x86)\Bazaar\plugins\svn [1.2.2]
  upload C:\Program Files (x86)\Bazaar\plugins\upload [1.2.0dev]
  xmloutput C:\Program Files (x86)\Bazaar\plugins\xmloutput [0.8.8]

Revision history for this message
Chris (launcspad) wrote :

It turns out that the problem occurs specifically when one shelves files that are added but not yet committed.

Revision history for this message
Alexander Belchenko (bialix) wrote :

That's a known problem with bzr itself, and could be reproduced with command-line bzr shelve. I'm sorry to say that.

affects: qbzr → bzr
summary: - Shelving code changes.
+ Shelve error: ERROR: bzrlib.errors.MalformedTransform: Tree transform is
+ malformed
Revision history for this message
Alexander Belchenko (bialix) wrote :

I'm sure it's a duplicate of another bug, but I don't remember which one.

Revision history for this message
Chucky (lechuck) wrote :

This is confirmed as
 - it is easily reproduceable (create a dir, add it then shelve it)
 - there is several duplicates

Changed in bzr:
status: New → Confirmed
Chucky (lechuck)
tags: added: add bazaar bzr committed created folder mkdir newly not shelve
Revision history for this message
Richard Wilbur (richard-wilbur) wrote :

Is the problem that the 'shelve' code wants to have a bzr version associated with each file system element it processes, but the elements in the situation this bug describes don't yet have one since they haven't been committed?

I suppose one method of dealing with that would be to modify the shelve code to allow bzr_lib.revsion.NULL_REVISION and use that to track shelved, never-committed file system elements. On the other hand I'm probably missing the point of 'shelve', to keep uncommitted changes in the tree?

Does 'bzr add' put something in the tree, or in some 'on-deck' position where 'bzr commit' will actually put it in the tree?

Revision history for this message
Chucky (lechuck) wrote :

I simply don't know anything of BZR internals... I am not even sure your post concerns me.

I take the opportunity, however, to summarize the use case:

From a functional point of view (I, dumb user, if you prefer ;-) ):
 - I've a working copy of a remote branch
 - I've already worked a bit on a task 'T'
 - a new task 'P' with higher priority arrives and I want to work on it, without losing the work already done for task 'T'
 - I don't want to reconfigure all my dev tools to work on 'P' on another working copy of the remote branch (as I know there is 'bzr shelve' for that)
 - I expect 'bzr shelve' to allow me to switch my working copy by keeping my currently unfinished work for task 'T' on the shelve
 - I understand that BZR requires that I 'bzr add' new files/folders before shelving them, to distinguish them from garbage and generated stuff
 - I can't do that if my work implies the creation of files in a new folder which has been 'bzr add'-ed without having been committed locally.

Quoting official BZR documentation about 'bzr shelve':
  Purpose: Temporarily set aside some changes from the current tree.

I guess I am not expecting abilities not advertised by BZR.

Jelmer Vernooij (jelmer)
tags: added: check-for-breezy
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Related questions

Remote bug watches

Bug watches keep track of this bug in other bug trackers.