Home Page Icon
Home Page
Table of Contents for
Bazaar Version Control
Close
Bazaar Version Control
by Janos Gyerik
Bazaar Version Control
Bazaar Version Control
Table of Contents
Bazaar Version Control
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Getting Started
Version control systems
Reverting a project to a previous state
Viewing the log of changes
Viewing the differences between revisions
Branching and merging
Acronyms related to version control
Centralized version control systems (CVCS)
Distributed version control systems (DVCS)
What is Bazaar?
Installing Bazaar and its plugins
GNU/Linux
Ubuntu, Debian, and derivatives
Red Hat, Fedora, CentOS, and derivatives
openSUSE and derivatives
Installing Bazaar using pip
Other installation methods
Windows
Mac OS X
Bazaar in a shared hosting environment
Interacting with Bazaar
Using the command-line interface
Using the graphical user interface
Using the two user interfaces together
Upgrading Bazaar to the latest version
Uninstalling Bazaar
Getting help
Summary
2. Diving into Bazaar
Understanding the core concepts
Revision
Repository
Branch
Working tree
Putting the concepts together
Storing Bazaar's data in the filesystem
Introducing the user interfaces
Using the command-line interface (CLI)
Using Bazaar Explorer
Configuring Bazaar
Configuring the author information
Configuring the default editor
Other configuration options
Performing the basic version control operations
Putting a directory under version control
Using the command line
Using Bazaar Explorer
Checking the status of files and directories
Using the command line
Using Bazaar Explorer
Adding files to version control
Using the command line
Using Bazaar Explorer
Recording a new revision
Using the command line
Using Bazaar Explorer
Ignoring files
Using the command line
Using Bazaar Explorer
Checkpoint
Deleting files
Using the command line
Using Bazaar Explorer
Undoing changes
Using the command line
Using Bazaar Explorer
Editing files
Using the command line
Using Bazaar Explorer
Viewing differences in changed files
Using the command line
Using Bazaar Explorer
Checkpoint
Renaming or moving files
Using the command line
Using Bazaar Explorer
Checkpoint
Viewing the revision history
Using the command line
Using Bazaar Explorer
Restoring files from a past revision
Using the command line
Using Bazaar Explorer
Putting it all together
Making different kinds of changes
Understanding the output the revert command
Understanding the output of the status command
Understanding the backup files created by Bazaar
Understanding the .bzr directory
How often to commit?
Beyond the basics
Mastering the command line
Common flags
Common behavior in all the commands
Using shorter aliases of commands
Quick reference card
Using tags
Specifying revisions
Specifying a single revision
Specifying a range of revisions
Viewing differences between any two revisions
Viewing differences between any revision and the working tree
Viewing differences between any two revisions
Viewing differences going from one revision to the next
Cloning your project
Summary
3. Using Branches
What is a branch?
A single branch with a linear history
Multiple diverged branches
Branches with non-linear history
Unrelated branches
What can you do with branches?
Creating branches
Comparing branches
Merging branches
Mirroring branches
Why use more than one branch?
Separating the development of new features
Switching between tasks
Experimenting with different approaches
Maintaining multiple versions
Understanding core terms and concepts
trunk, master, and mainline
The tip of a branch
Source and target branches
Parent branch
Diverged branches and the base revision
Storing branch data
Using a shared repository
Using the command line
Using Bazaar Explorer
Basic branching and merging
Getting the example project
Using the command line
Using Bazaar Explorer
Creating a feature branch
Using the command line
Using Bazaar Explorer
Working on a branch
Starting another branch
Merging the bugfix branch
Using the command line
Using Bazaar Explorer
Viewing merged revisions in the log
Using the command line
Using Bazaar Explorer
Using the branch command
Creating branches based on an older revision
Using the command line
Using Bazaar Explorer
Viewing basic branch information
Comparing branches
Using the command line
Viewing missing revisions between branches
Viewing the differences between branches
Using Bazaar Explorer
Viewing the tree of branches
Viewing missing revisions between branches
Viewing the differences between branches
Merging branches
Performing a three-way merge
Completing the merge
Committing the merge
Aborting the merge
Resolving conflicts
Resolving text conflicts
Resolving content conflicts
Redoing the merge
Resolving other types of conflicts
Merging a subset of revisions
Merging up to a specific revision
Merging a range of revisions
Cherry-picking
Understanding revision numbers
Merging from multiple branches
Mirroring branches
Mirroring from another branch
Mirroring from the current branch
Summary
4. Using Bazaar in a Small Team
Collaborating with others
Working with remote branches
Implementing simple workflows
Sharing branches over the network
Specifying remote branches
Using URL parameters
Using remote branches through a proxy
Sharing branches using a distributed filesystem
Sharing branches over SSH
Using individual SSH accounts
Using individual SSH accounts with SFTP
Using a shared restricted SSH account
Using SSH host aliases
Using a different SSH client
Sharing branches using bzr serve
Sharing branches using inetd
Sharing branches over HTTP or HTTPS
Working with remote branches
Working with remote branches directly
Using local mirror branches
Creating a local mirror
Using a shared repository
Updating a local mirror
Using remote mirror branches
Creating a remote mirror
Using a shared repository
Updating a remote mirror
Using branches without a working tree
Creating a local branch without a working tree
Creating or removing the working tree
Reconfiguring working trees in a shared repository
Creating remote branches without a working tree
Slicing and dicing branches
Implementing simple workflows
Using independent personal branches
Merging from branches repeatedly
Handling criss-cross merges
Viewing the history from different perspectives
Using feature branches and a common trunk
Merging into a common remote trunk
Merging feature branches in lock-step
Doing "code reviews"
Summary
5. Working with Bazaar in Centralized Mode
The centralized mode
Core operations
The centralized workflow
Checkout from the central branch
Making changes
Committing changes
Updating from the server
Handling conflicts during update
Advantages
Easy to understand
Easy to synchronize efforts
Widely used
Disadvantages
Single point of failure
Administrative overhead of access control
The update operation is not safe
Unrelated changes interleaved in the revision history
Using Bazaar in centralized mode
Bound branches
Creating a checkout
Using the command line
Using Bazaar Explorer
Updating a checkout
Using the command line
Using Bazaar Explorer
Visiting an older revision
Committing a new revision
Practical tips when working in centralized mode
Working with bound branches
Unbinding from the master branch
Binding to a branch
Using local commits
Working with multiple branches
Setting up a central server
Using an SSH server
Using the smart server over SSH
Using individual SSH accounts
Using a shared restricted SSH account
Using SFTP
Using bzr serve directly
Using bzr serve over inetd
Creating branches on the central server
Creating a shared repository without working trees
Reconfiguring a shared repository to not use working trees
Removing an existing working tree
Creating branches on the server without a working tree
Practical use cases
Working on branches using multiple computers
Synchronizing backup branches
Summary
6. Working with Bazaar in Distributed Mode
The distributed mode in general
Collaborators work independently
The mainline branch is just a convention
Collaborators write only to their own branches
The distributed mode gives great flexibility
Encouraging feature branches
The revision history depends on the perspective
The human gatekeeper workflow
Overview
Setting guidelines to accept merge proposals
The role of the gatekeeper
Creating a merge proposal
Using a Bazaar hosting site
Sharing the branch URL with the gatekeeper
Sending a merge directive
Creating a merge directive
Merging from a merge directive
Merge directives without revision content
Rejecting a merge proposal
Accepting a merge proposal
Reusing a branch
Commander/Lieutenant model
Switching from the peer-to-peer workflow
The automatic gatekeeper workflow
Patch Queue Manager (PQM)
Revision history graph
The shared mainline workflow
Updating the mainline using push operations
Updating the mainline using a new local mirror
Re-using an existing local mirror
Updating the mainline using a bound branch
Updating the mainline using a new checkout
Reusing an existing checkout
Choosing a distributed workflow
Summary
7. Integrating Bazaar in CDE
What is a CDE?
Working with Launchpad
Creating a Launchpad account
Creating an account
Configuring your Launchpad account
Configuring SSH public keys
Associating bzr with Launchpad
Testing your setup
Hosting personal branches
Uploading personal branches
Using personal branches
Deleting branches
Hosting a project
Using the Sandbox site
Creating a project
Uploading project branches
Viewing project branches
Viewing your own branches
Setting a focus branch
Using series
Viewing and editing branch details
Using merge proposals
Creating a merge proposal
Viewing and editing a merge proposal
Approving / rejecting a merge proposal
Using the e-mail interface to handle a merge proposal
Browsing the content of a branch
Using the bug tracking system
Reporting bugs
Linking commits to bugs
Useful tips when using Launchpad
Deleting or renaming a project
The karma system
Hosting private projects
Integrating Bazaar into Redmine
Integrating Bazaar into Trac
Enabling the plugin globally
Enabling the plugin for one project only
Browsing Bazaar branches
Getting help
Linking commits to bug trackers
Configuring bug trackers in Bazaar
Linking to public bug trackers
Linking to Launchpad
Linking to Bugzilla
Linking to Trac
Linking to other bug trackers
Advanced integration with bug trackers
Web-based repository browsing with Loggerhead
Installing Loggerhead
Running Loggerhead locally
Running Loggerhead in production
Summary
8. Using the Advanced Features of Bazaar
Using aliases
Undoing commits
Shelving changes
Putting changes "on a shelf"
Listing and viewing shelved changes
Restoring shelved changes
Using shelves to revert partial changes in a file
Using shelves to commit partial changes in a file
Using lightweight checkouts
Creating a lightweight checkout
Converting a checkout to a lightweight checkout
Converting a branch to a lightweight checkout
Converting from a lightweight checkout
Re-using a working tree
Setting up the example
Preparing to switch branches
Switching to another branch using core commands
Switching to another branch by using switch
Using a lightweight checkout for switching branches
Using stacked branches
Signing revisions using GnuPG
Configuring the signing key used by Bazaar
Setting up a sample repository
Verifying signatures
Signing existing revisions
Signing a range of commits
Signing new commits automatically
Configuring a hook to send an e-mail on commit
Setting up the example
Installing the email plugin
Enabling commit emails
Testing the configuration
Customizing the plugin
Summary
9. Using Bazaar Together with Other VCS
Working with other VCS in general
Working with foreign branches
Installing plugins
Installing plugins in Windows or Mac OS X
Installing plugins in Linux
Installing plugins using Pip
Installing additional requirements
Understanding the protocol overhead
Using shared repositories
Limitations
Issues and crashes
Using Bazaar with Subversion
Installing bzr-svn
Supported protocols and URL schemes
Using the example Subversion repository
Understanding branches in Subversion
Branching or checkout from Subversion
Preserving Subversion metadata
Preserving original revision numbers
Preserving versioned properties
Preserving revision and file IDs
Pulling or updating from Subversion
Committing to Subversion
Pushing to Subversion
Merging Subversion branches
Merging local branches into Subversion
Binding and unbinding to Subversion locations
Using lightweight checkouts
Browsing the logs
Limitations of bzr-svn
Final remarks on bzr-svn
Using Bazaar with Git
Installing bzr-git
Supported protocols and URL schemes
Using the example Git repository
Branching from git
Preserving version control metadata
Preserving Git revision ids
Preserving merged branches and revisions
Pulling from Git
Pushing to Git
Merging Git branches
Merging local branches into Git
Limitations of bzr-git
Final remarks on bzr-git
Migrating between version control systems
Installing bzr-fastimport
Exporting version control data
Exporting Subversion data
Exporting Git data
Exporting Bazaar data
Exporting other VCS data
Importing version control data
Querying fast-import files
Filtering fast-import
Summary
10. Programming Bazaar
Using Bazaar programmatically
Using bzrlib outside of bzr
Accessing Bazaar objects
Accessing branch data
Accessing branch configuration values
Accessing revision history
Accessing the contents of a revision
Formatting revision info using a log format
More examples
Locating BZRLIB
Creating a plugin
Using the example plugins
Using the summary plugin
Using the customlog plugin
Using the appendlog plugin
Naming the plugin
Creating the plugin directory
Implementing the plugin
Writing the README file
Creating __init__.py
Setting help and documentation texts
Declaring the API version
Declaring the plugin version
Verifying the loaded module name
Registering new functionality
Registering a new command
Registering a new log format
Registering a hook
Registering other kinds of functionalities
Registering a test suite
Performance considerations
Writing unit tests
Creating setup.py
Browsing existing plugins
Registering your plugin
Creating a hook
Hook points, hook classes, and hook types
Registering hooks
Activating hooks
References
Summary
Index
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Prev
Previous Chapter
Table of Contents
Next
Next Chapter
Bazaar Version Control
Bazaar Version Control
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset