/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to BRANCH.TODO

  • Committer: Martin Pool
  • Date: 2007-02-26 05:29:05 UTC
  • mto: This revision was merged to the branch mainline in revision 2309.
  • Revision ID: mbp@sourcefrog.net-20070226052905-7mt8m6871e9dym8e
Tag command refuses to replace existing tags unless you force it.

Add Tags.has_tag.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# This file is for listing TODOs for branches that are being worked on.
 
2
# It should ALWAYS be empty in the mainline or in integration branches.
 
3
 
4
 
 
5
Short-and-sweet implementation of tags for bzr
 
6
 
 
7
Key features:
 
8
 
 
9
Tags are stored in a repository.  Tags are pointers from names to revision
 
10
ids.  Normally there should be a single universal definition for any tag
 
11
name, though reality diverges from this in several important cases,
 
12
including:
 
13
 
 
14
 * A new tag has been added in a repository, but not yet propagated to its 
 
15
   mirrors.
 
16
 
 
17
There is a single set of tag definitions visible by all operations within
 
18
that repository.  The history of tags is not recorded (though we could
 
19
perhaps record who made the tags and when, just for human reference).
 
20
 
 
21
This patch modifies RepositoryFormatKnit2 to add tag support.  This 
 
22
should be ok as this format is marked as experimental, though it has 
 
23
shipped in previous releases.  If people are using it, and use an old 
 
24
client to copy a repository it may lose the tag information.
 
25
 
 
26
 
 
27
Done
 
28
----
 
29
 
 
30
 - method to get tags from a repository - there are none at present
 
31
 - this should return nothing (or None) on old formats, or say that
 
32
   it's not supported
 
33
 - add a new repository format which does have tags 
 
34
 - get a single tag, or complain if it's not defined
 
35
 - add a tag command which tags a revision, by adding an entry into the 
 
36
   repository's tag dictionary
 
37
 - add tag:foo revision spec, and make sure it can be used 
 
38
 - separate tag storage into a strategy object?
 
39
 - raise TagsNotSupported on repositories that don't
 
40
 - make tag on arbitrary revisions
 
41
 - copy tags when cloning the repository
 
42
 - copy tags on push and pull
 
43
 - move tag operations onto branch
 
44
 - store tags in bencode format - or nul-delimited
 
45
 - test use of unicode tags
 
46
 - rename TagStore and change to branch.tags
 
47
 - delete tags, and mark as deleted
 
48
 - command to show all tags
 
49
 - make the experimental branch format available through a bzrdir format
 
50
 - if tag already exists, don't overwrite it
 
51
 
 
52
Plan
 
53
----
 
54
 
 
55
 - move merge-tags stuff into pull, push, merge, etc - not in command routines
 
56
 - raise an exception if the tag name is unreasonable
 
57
   - see what happens if non-ascii byte string is given
 
58
 - if tags conflict when copying
 
59
   - return them and give a warning
 
60
   - option to override this and copy anyhow
 
61
 - refuse to add tags if the tag is already present, but allow it to 
 
62
   be forced
 
63
 - maybe rename merge_to to merge_from (and invert the code)?
 
64
 
 
65
 
 
66
Later
 
67
-----
 
68
 - copy only selected tags
 
69
 - record who set tags, when, why
 
70
 - show tags in log
 
71
 - test copying tags between different branch formats?  a 
 
72
   bit hard as there's only one at the moment...
 
73
   - possibly better based on an InterBranch object
 
74
   - could test between hpss and local branches
 
75
 - include tags in bundles?
 
76
   (probably no point as not versioned)
 
77
 
 
78
 
 
79
Also to do
 
80
----------
 
81
 
 
82
Are LockableFiles still really useful, rather than just?  Being lockable is
 
83
perhaps not the point - rather that they have common conventions for how we
 
84
treat our control files...
 
85
 
 
86
Split repository.py into separate files for different formats?
 
87
 
 
88
Have a single 'Experimental' format containing all work that's not yet
 
89
released?
 
90
 
 
91
A single method to get the contents of a (small) file as bytes of utf8 -- on
 
92
Transport, I think, since many Transports can do that more efficiently than
 
93
returning a file-like object.
 
94
 
 
95
Keep the lock while constructing the Repository, so that we can call
 
96
things that expect the lock to be held, and avoid taking or releasing it,
 
97
or someone else seeing the half-constructed Repository.
 
98
 
 
99
put_bytes_nonatomic may fairly often have the case of writing no content
 
100
(and only creating the file) - we could test for and avoid one roundtrip.
 
101
 
 
102
Split builtin commands into separate files, lazily loaded. 
 
103
 
 
104
 - Change commands to use a standard Registry.
 
105
 - Register commands lazily.