在Debian Etch上使用Bazaar版本控制系统(VCS)
版本1.0
作者:Falko Timme
Bazaar是GPL提供的分布式版本控制系统(VCS); 它类似于Subversion(svn)。 Bazaar由Canonical有限公司赞助,该公司是开发Ubuntu Linux发行版的公司,因此Ubuntu项目是Bazaar最突出的用户。 本文介绍如何在Debian Etch系统上设置和使用Bazaar,以及如何配置SFTP / HTTP服务器来托管Bazaar存储库。
我不会保证这将为您工作!
1初步说明
在本教程中,我将使用两个Debian蚀刻系统:
- IP地址
192.168.0.100:Bazaar
将要安装的工作站和软件将被开发(将由Bazaar管理); 在本文中,我将其称为工作站
; - IP地址
192.168.0.101
:将保留Bazaar存储库并提供SFTP和HTTP服务的服务器; 我将在本文中将其称为服务器
。 我将在这里使用lighttpd作为Web服务器,但您也可以使用任何其他Web服务器(例如Apache)。
我将在两个系统上使用用户名falko
。
大多数集市使用示例摘自本指南: http : //doc.bazaar-vcs.org/latest/en/mini-tutorial/index.html ,但除了本指南外,本指南还说明了如何安装SFTP和lighttpd 服务器
和Bazaar在工作站
上使Bazaar体验对于不那么有经验的Linux用户来说更加平滑。
2在服务器上安装SFTP和Lighttpd
服务器:
(本章中的所有步骤必须以root用户身份完成!)
我们在服务器上安装SFTP和lighttpd:
apt-get install ssh openssh-server lighttpd
接下来,我们在这种情况下创建一个用户帐户 - falko
,它使用/ usr / lib / sftp-server
shell代替/ bin / bash
或任何其他shell:
useradd -m -s /usr/lib/sftp-server falko
这将创建用户falko
与主目录/ home / falko
。
为falko
分配密码:
passwd falko
然后通过将/ usr / lib / sftp-server
添加到/ etc / shells中
来使其成为一个有效的登录shell:
echo '/usr/lib/sftp-server' >> /etc/shells
现在我创建目录/ home / falko / public_html
,它将是lighttpd的文档根目录,并且将包含我们的Bazaar信息库:
mkdir /home/falko/public_html
chown falko:falko /home/falko/public_html
要告诉lighttpd文档根已更改为/ home / falko / public_html
,请打开/etc/lighttpd/lighttpd.conf
并修改server.document-root
行:
vi /etc/lighttpd/lighttpd.conf
[...] server.document-root = "/home/falko/public_html" [...] |
以后重启lighttpd:
/etc/init.d/lighttpd restart
3在工作站上安装集市
工作站:
以root身份运行以下命令:
apt-get install bzr python-paramiko
如果工作站上还没有正常的用户帐户,请立即创建一个:
useradd -m -s /bin/bash falko
passwd falko
4使用集市
工作站:
现在以普通用户身份登录,或者以root身份登录,运行
su falko
成为普通用户(在这种情况下是falko
)。
然后去你的家目录:
cd ~
以下示例或多或少地取自http://doc.bazaar-vcs.org/latest/en/mini-tutorial/index.html 。
首先,告诉Bazaar你是谁:
bzr whoami "Falko Timme <ft@example.com>"
检查Bazaar是否正确存储您的身份:
bzr whoami
falko@server1:~$ bzr whoami
Falko Timme <ft@example.com>
falko@server1:~$
现在让我们创建一个包含测试文件的测试目录:
mkdir myproject
cd myproject
mkdir subdirectory
touch test1.txt test2.txt test3.txt subdirectory/test4.txt
myproject
目录是我们要用Bazaar管理的软件项目的基本文件夹。 在该目录中运行所有bzr命令很重要! 如果您不确定在哪个目录中,请运行
pwd
Bazaar必须在项目目录中初始化:
bzr init
这将创建一些Bazaar需要管理您的项目的隐藏文件。 运行时,您可以在myproject
目录中看到隐藏的文件夹.bzr
ls -la
falko@server1:~/myproject$ ls -la
total 16
drwxr-xr-x 4 falko falko 4096 2007-12-19 16:14 .
drwxr-xr-x 4 falko falko 4096 2007-12-19 16:13 ..
drwxr-xr-x 6 falko falko 4096 2007-12-19 16:14 .bzr
drwxr-xr-x 2 falko falko 4096 2007-12-19 16:13 subdirectory
-rw-r--r-- 1 falko falko 0 2007-12-19 16:13 test1.txt
-rw-r--r-- 1 falko falko 0 2007-12-19 16:13 test2.txt
-rw-r--r-- 1 falko falko 0 2007-12-19 16:13 test3.txt
falko@server1:~/myproject$
现在跑
bzr add
以使myproject
文件夹中的所有文件/目录被版本
化。 输出如下:
falko@server1:~/myproject$ bzr add
added subdirectory
added test1.txt
added test2.txt
added test3.txt
added subdirectory/test4.txt
falko@server1:~/myproject$
接下来将文件/目录添加到您的分支(使用小注释,以便您知道此提交是什么):
bzr commit -m "Initial import"
输出如下:
falko@server1:~/myproject$ bzr commit -m "Initial import"
added subdirectory
added subdirectory/test4.txt
added test1.txt
added test2.txt
added test3.txt
Committed revision 1.
falko@server1:~/myproject$
现在我们来修改(空)文件test1.txt
:
vi test1.txt
some text... |
跑
bzr diff
Bazaar会向您显示更改:
falko@server1:~/myproject$ bzr diff
=== modified file 'test1.txt'
--- test1.txt 2007-12-19 15:19:42 +0000
+++ test1.txt 2007-12-19 15:20:39 +0000
@@ -0,0 +1,1 @@
+some text...
falko@server1:~/myproject$
要提交更改(再次使用注释),请运行
bzr commit -m "Added first line of text"
falko@server1:~/myproject$ bzr commit -m "Added first line of text"
modified test1.txt
Committed revision 2.
falko@server1:~/myproject$
命令
bzr log
显示最新动作的历史记录:
falko@server1:~/myproject$ bzr log
------------------------------------------------------------
revno: 2
committer: Falko Timme <ft@example.com>
branch nick: myproject
timestamp: Wed 2007-12-19 16:22:52 +0100
message:
Added first line of text
------------------------------------------------------------
revno: 1
committer: Falko Timme <ft@example.com>
branch nick: myproject
timestamp: Wed 2007-12-19 16:19:42 +0100
message:
Initial import
falko@server1:~/myproject$