/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 bzrlib/fetch.py

  • Committer: Martin Pool
  • Date: 2009-06-10 02:51:23 UTC
  • mfrom: (4423 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4464.
  • Revision ID: mbp@sourcefrog.net-20090610025123-2u0c0ng5jcezjzqh
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
 
18
18
"""Copying of history from one branch to another.
30
30
    errors,
31
31
    symbol_versioning,
32
32
    )
33
 
from bzrlib.errors import InstallFailed
34
 
from bzrlib.progress import ProgressPhase
35
33
from bzrlib.revision import NULL_REVISION
36
34
from bzrlib.tsort import topo_sort
37
35
from bzrlib.trace import mutter
136
134
            pb.update("Inserting stream")
137
135
            resume_tokens, missing_keys = self.sink.insert_stream(
138
136
                stream, from_format, [])
 
137
            if self.to_repository._fallback_repositories:
 
138
                missing_keys.update(
 
139
                    self._parent_inventories(search.get_keys()))
139
140
            if missing_keys:
140
141
                pb.update("Missing keys")
141
142
                stream = source.get_stream_for_missing_keys(missing_keys)
167
168
        if self._last_revision is NULL_REVISION:
168
169
            # explicit limit of no revisions needed
169
170
            return None
170
 
        if (self._last_revision is not None and
171
 
            self.to_repository.has_revision(self._last_revision)):
172
 
            return None
173
 
        try:
174
 
            return self.to_repository.search_missing_revision_ids(
175
 
                self.from_repository, self._last_revision,
176
 
                find_ghosts=self.find_ghosts)
177
 
        except errors.NoSuchRevision, e:
178
 
            raise InstallFailed([self._last_revision])
 
171
        return self.to_repository.search_missing_revision_ids(
 
172
            self.from_repository, self._last_revision,
 
173
            find_ghosts=self.find_ghosts)
 
174
 
 
175
    def _parent_inventories(self, revision_ids):
 
176
        # Find all the parent revisions referenced by the stream, but
 
177
        # not present in the stream, and make sure we send their
 
178
        # inventories.
 
179
        parent_maps = self.to_repository.get_parent_map(revision_ids)
 
180
        parents = set()
 
181
        map(parents.update, parent_maps.itervalues())
 
182
        parents.discard(NULL_REVISION)
 
183
        parents.difference_update(revision_ids)
 
184
        missing_keys = set(('inventories', rev_id) for rev_id in parents)
 
185
        return missing_keys
179
186
 
180
187
 
181
188
class Inter1and2Helper(object):