Skip to content

Commit

Permalink
corrections done as per J.N. Avila's suggestions
Browse files Browse the repository at this point in the history
  • Loading branch information
aollier committed Mar 8, 2017
1 parent d1fb00d commit 2f449a3
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions book/09-git-and-other-scms/sections/import-bzr.asc
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,34 @@
Bazaar is a DVCS tool much like Git, and as a result it's pretty straightforward to convert a Bazaar repository into a Git one.
To accomplish this, you'll need to import the `bzr-fastimport` plugin.


===== Getting the bzr-fastimport plugin

The procedure for installing the fastimport plugin is different on UNIX-like operating systems and on Windows.
In the first case, the simplest is to install the `bzr-fastimport` package that will install all the required dependencies.

For example, with Debian and derived, you would do the following:

[source,console]
----
$ sudo apt-get install bzr-fastimport
----

With RHEL, you would do the following:

[source,console]
----
$ sudo yum install bzr-fast-import
----

With Fedora, since release 22, the new package manager is dnf:

[source,console]
----
$ sudo dnf install bzr-fastimport
----

If the package is not available, you may install it as a plugin:

[source,console]
----
$ mkdir --parents ~/.bazaar/plugins/bzr # creates the necessary folders for the plugins
Expand All @@ -40,6 +43,7 @@ $ sudo python setup.py install --record=files.txt # installs the plugin

For this plugin to work, you'll also need the `fastimport` Python module.
You can check whether it is present or not and install it with the following commands:

[source,console]
----
$ python -c "import fastimport"
Expand All @@ -55,50 +59,54 @@ So in this case you have nothing to do.

At this point, the way to import a Bazaar repository differs according to that you have a single branch or you are working with a repository that has several branches.


===== Project with a single branch

Now `cd` in the directory that contains your Bazaar repository and initialize the Git repository:

[source,console]
----
$ cd /path/to/the/bzr/repository
$ git init
----

Now, you can simply export your Bazaar repository and convert it into a Git repository using the following command:

[source,console]
----
$ bzr fast-export --plain . | git fast-import
----

Depending on the size of the project, your Git repository is built in a lapse from a few seconds to a few minutes.


===== Case of a project with a main branch and a working branch

You can also import a Bazaar repository that contains branches.
Let us suppose that you have two branches: one represents the main branch (myProject.trunk), the other one is the working branch (myProject.work).

[source,console]
----
$ ls
myProject.trunk myProject.work
----

Create the Git repository and `cd` into it:

[source,console]
----
$ git init git-repo
$ cd git-repo
----

Pull the master branch into git:

[source,console]
----
$ bzr fast-export --export-marks=../marks.bzr ../myProject.trunk | \
git fast-import --export-marks=../marks.git
----

Pull the working branch into Git:

[source,console]
----
$ bzr fast-export --marks=../marks.bzr --git-branch=work ../myProject.work | \
Expand All @@ -108,33 +116,33 @@ git fast-import --import-marks=../marks.git --export-marks=../marks.git
Now `git branch` shows you the `master` branch as well as the `work` branch.
Check the logs to make sure they’re complete and get rid of the `marks.bzr` and `marks.git` files.

===== Synchronizing the staging area

===== Synchronize the staging area

Whatever the number of branches you had and the import method you used, your staging area is not synchronized with HEAD, and with the import of several branches, your working directory is not synchronized neither.
Whatever the number of branches you had and the import method you used, your staging area is not synchronized with `HEAD`, and with the import of several branches, your working directory is not synchronized either.
This situation is easily solved by the following command:

[source,console]
----
$ git reset --hard HEAD
----

===== Ignoring the files that were ignored with .bzrignore

===== Ignore the files that were ignored with .bzrignore

Now let us have a look at the files to ignore.
Now let's have a look at the files to ignore.
As `.bzrignore`'s format is completely compatible with `.gitignore`'s format, the simplest is to rename your `.bzrignore` file.
You will also have to create a commit that contains this change for the migration:

[source,console]
----
$ git mv .bzrignore .gitignore
$ git commit -am 'Migration from Bazaar to Git'
----


===== Send your repository to the server

Here we are!
Now you can push the repository onto its new home server:

[source,console]
----
$ git remote add origin git@my-git-server:mygitrepository.git
Expand Down

0 comments on commit 2f449a3

Please sign in to comment.