~abentley/bzrtools/bzrtools.dev

  • Committer: ghigo
  • Date: 2006-03-13 20:19:41 UTC
  • Revision ID: ghigo@venice-20060313201941-1322dc5ba24517d6
Use the TreeTransform class, on the basis of the suggest of
Aaron Bentley 

---------------------------------------

Goffredo Baroncelli wrote:
| On Monday 13 March 2006 01:36, Aaron Bentley wrote:
|
|>Hi Goffredo,
|
|
| Hi Aaron,
|
|
|>I'm still waiting for your thoughts on this.  As I said, I'm willing to
|>merge it, given that it's optional.  On the other hand, there are
|>situations where it will lead to data loss, so using TreeTransform may
|>be a better approach.
|
|
| I updated the patch in order to solve some concerns. But you are right, I
| have to use the TreeTransform class. My big problem is the lack of
| documentation on how use the class: could you answer to some my question ?

Sure.  Any failings in the documentation are my fault.

| The TreeTransform class is instantiated on the working tree: but how we
| inform the class that a file is:
| - changed ( updated )

Get the trans_id with trans_id_tree_file_id
Delete the current contents with delete_contents
Add new contents with create_file (or symlink, directory)

| - created

Call new_file

| - deleted

Get the trans_id with trans_id_tree_file_id
Delete the current contents with delete_versioned

| - renamed/moved ( is it the same ? )

Get the trans_id with trans_id_tree_file_id
Call adjust_path

| Then how we can manage the conflict ?

If you create a filesystem conflict, the transform won't apply.  If you
call resolve_conflicts, it will fix filesystem conflicts, so the
transform will apply.

Text conflicts are up to you to manage.

| Reading the code, what I understood is that:
| - for every file touched, It must assign a trans_id using the function
create_path( )

create_path is only for new files.  For existing files, you should get
them from trans_id_tree_file_id, trans_id_tree_path, or trans_id_file_id.

| - the creation of a file/directory/symlink is perfomed via the
create_{directory,symlink,file)
| function

You can, but there are also the new_file, new_directory, new_symlink
convenience methods.

| - the deletion of a file ( directory, symlink ? ) is scheduled by the
| unversion_file/delete_contents depending if a file is versioned.

For a versioned file, you'd have to do both.  Or, you can use
delete_versioned_file.

| - the renaming of a directory/file/symlink is perfomed by the
adjust_path function

Right.

| - I dont understood how we manage the content change

Content changes are content deletion and content creation.

Aaron
Filename Latest Rev Last Changed Committer Comment Size
..
changelog 77 19 years ago aaron.bentley at utoronto Tweaked Debian packaging 347 bytes Diff Download File
compat 75 19 years ago Jeff Bailey Add Debian directory 2 bytes Diff Download File
control 77 19 years ago aaron.bentley at utoronto Tweaked Debian packaging 361 bytes Diff Download File
copyright 76 19 years ago Aaron Bentley Updated copyright 224 bytes Diff Download File
dirs 75 19 years ago Jeff Bailey Add Debian directory 17 bytes Diff Download File
docs 75 19 years ago Jeff Bailey Add Debian directory Empty Diff Download File
install 75 19 years ago Jeff Bailey Add Debian directory 125 bytes Diff Download File
rules 75 19 years ago Jeff Bailey Add Debian directory 270 bytes Diff Download File