= Bazaar-Perforce TODO = == Introduction == See also the NEWS file in the same directory as this file. == User Stories == The User Stories below appear in priority order. The estimated relative size of each story appears in square brackets ([]) following the story. * Research why bzr2p4.py merges revisions are flattened into Perforce like: 3 2 1.1.2 1.1.1 1 in cases when the Bazaar history looks like: 3 1.1.2 1.1.1 2 1 [1] [3 hours] * As a user, I want p4-fast-export to emit 'mark' commands, so that my Bazaar branch mirrors can remember Perforce changelist numbers in a structured way. [1] * As a developer, I want to identify a Perforce hosting service, if one exists, that I can use as the public, primary host for the bzrp4 source. [0.5] [0.5 hours] * As a developer, I want to migrate the bzrp4 source to the Perforce hosting service. [0.5] * As a developer I want to create a new bzrp4 Bazaar branch on Launchpad to mirror the new Perforce-hosted source history. [0.5] * As a user, I want an automated tool to keep a Bazaar mirror in sync with a Perforce depot, without exporting all changes from Perforce on every sync. [1] * Research Jelmer's proposed Bazaar patch to store foreign revision identifiers in Bazaar branches. * As a developer I want to automate mirroring the bzrp4 source in the Bazaar branch on Launchpad. [2] * As a developer, I want to use the following process to create and commit changes to bzrp4's source: 1. Mirror the bzrp4 source from a Perforce host to a Bazaar branch. 2. Branch from the Bazaar mirror branch. 3. Commit changes to the working branch. 4. Rebase changes onto new changes in the upstream mirror branch. 5. Repeat steps 3-4 as necessary. 6. Create a patch. 7. Apply the patch to a Perforce workspace. 8. Submit the change to the Perforce host. Note: Steps 6-8 will later be changed to use bzr2p4 or a similar tool to replay the changes one-by-one onto the Perforce server. [2] [8.5 hours] * As a developer, I want to use bzr2p4 to migrate a given range of changes one-by-one from a Bazaar branch to a Perforce server. [3] * As a developer, I want to reorganize test_bzr2p4.py and test_dogfood.py. [0.5] * As a developer, I want to configure the port that p4d uses, so that I can run multiple instances of the test suite simultaneously on a single machine. [1] * As a developer, I want the test code not to depend on Git. [5] * As a developer, I want the application code not to depend on the p4 command-line client. [8] * As a developer, I want all tests to pass on Linux. [2] * As a developer, I want continuous integration, automatically triggered, for Linux test execution. [2] * As a developer, I want continuous integration, automatically triggered, for Cygwin test execution. [3] * As a user, I want bzr2p4 to show only the progress I care about instead of logging verbosely to the console. [3] * As a user, I want the line endings of my files not to change during migration, so that my data is exactly the same before and after migration. (I'm not sure Perforce can do this.) [13] * bzr2p4.py needs to set standard input and standard output to binary mode on Windows, I think. * As a user, I want the author of each Bazaar revision migrated to Perforce, so that I can easily see who created revisions in Perforce. [3] * As a user, I want migration of revisions with Perforce keywords to work correctly, so that I can migrate projects that use Perforce keywords. (Does this just need tests that demonstrate it works?) [3] * As a user, I want a suite of tools that facilitate creating a Bazaar branch from a Perforce depot, and submitting to a Perforce depot from a Bazaar branch. [?]