在Linux上创建webrev(cont)[基于svn]

前文中,基于git介绍了webrev工具。实际上,webrev工具还支持hg和svn。最近的工作中不可避免地要使用svn,故在此总结一下如何基于svn在Linux上创建webrev。顺便吐个槽,没有网页版的代码比对,用svn diff简直就是刀耕火种茹毛饮血啊!技术再娴熟的老司机,也架不住让你在高速公路上开拖来机Orz!

以前工作上一直用版本管理工具Mercurial (命令为hg), 个人学习的话用Git, 但从来没用过Subversion (命令为svn等) 。所以,下面的先简单介绍一下如何搭建一个svn的server然后初始化一个代码仓库。相比之下,基于Mercurial的代码仓库初始化实在是太容易了,只需要一条命令(hg init .)搞定。

1. 搭建一个svn的server

1.1 创建一个项目venus

root# cd /var/tmp && mkdir ducert
root# svnadmin create venus

1.2 配置项目venus

root# tree venus/conf
venus/conf
├── authz            #<-- 权限相关的配置
├── hooks-env.tmpl
├── passwd           #<-- 帐号相关的配置
└── svnserve.conf    #<-- 资源库相关配置

0 directories, 4 files

1.2.1 配置账号 e.g. 添加用户veli, 密码为veli (见第9行)

root# cat -n passwd
     1	### This file is an example password file for svnserve.
     2	### Its format is similar to that of svnserve.conf. As shown in the
     3	### example below it contains one section labelled [users].
     4	### The name and password for each user follow, one account per line.
     5
     6	[users]
     7	# harry = harryssecret
     8	# sally = sallyssecret
     9	veli = veli

1.2.2 配置权限 e.g. 给用户veli的是可以在/下面进行读写 (见第34和35行)

root# cat -n authz
     1  ### This file is an example authorization file for svnserve.
     2  ### Its format is identical to that of mod_authz_svn authorization
     3  ### files.
   ...
    33
    34  [/]
    35  veli=rw

1.2.3 配置资源库 e.g. 设置代码库的根目录(见第48行) (第19,20,27,36行只需要把对应的注释符号去掉即可)

root# cat -n svnserve.conf
     1  ### This file controls the configuration of the svnserve daemon, if you
     2  ### use it to allow access to this repository.  (If you only allow
     3  ### access through http: and/or file: URLs, then this file is
   ...
    19  anon-access = read
    20  auth-access = write
   ...
    27  password-db = passwd
   ...
    36  authz-db = authz
   ...
    48  realm = /var/tmp/ducert/venus
   ...

1.3 启动svnserver (e.g. svnserve -d -r venus)

root# cd /var/tmp/ducert && pkill svnserve

root# svnserve -d -r venus

root# ps -ef | grep venus | grep -v grep
root      6960  2233  0 11:29 ?        00:00:00 svnserve -d -r venus
root# netstat -an | grep 3690
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN

1.4 测试svn server "venus" 可以正常工作

1.4.1 checkout

veli$ ifconfig -a | egrep "inet addr:.*255.255.255.0"
          inet addr:192.168.228.128  Bcast:192.168.228.255  Mask:255.255.255.0

veli$ svn co svn://192.168.228.128 --username=veli --password=veli
Checked out revision 0.

veli$ ls -A
.svn

1.4.2 add some files

veli$ cd /tmp && mkdir sandbox && cd sandbox
veli$ svn mkdir demo
A         demo

veli$ cd demo
veli$ svn add foo.c
A         foo.c
veli$ svn add bar.py
A         bar.py
veli$ svn add Makefile
A         Makefile

veli$ svn status
A       .
A       Makefile
A       bar.py
A       foo.c

1.4.3 commit

veli$ svn commit -m "05/15/2017: init demo"
Adding         .
Adding         Makefile
Adding         bar.py
Adding         foo.c
Transmitting file data ...
Committed revision 1.

到此为止,一个svn server就搭建好了,并且可以很流畅地工作了。接下来,使用webrev工具创建代码比对网页。因为在前一节已经介绍了如何下载webrev工具,这里就不再多说了,直接使用就好。

2. 使用webrev创建代码比对网页

2.1 checkout svn库里的demo代码

veli$ rm -rf /tmp/sandbox && mkdir /tmp/sandbox
veli$ cd /tmp/sandbox

veli$ svn co svn://192.168.228.128 --username=veli --password=veli
A    demo
A    demo/bar.py
A    demo/Makefile
A    demo/foo.c
Checked out revision 1.

2.2 修改文件

veli$ cd /tmp/sandbox/demo

veli$ vi foo.c
veli$ svn diff foo.c
Index: foo.c
===================================================================
--- foo.c       (revision 1)
+++ foo.c       (working copy)
@@ -3,7 +3,7 @@
 int
 main(int argc, char *argv[])
 {
-       (void) printf("Hello World!\n");
+       printf("Hello World!\n");

        return 0;
 }

veli$ vi bar.py
veli$ svn diff bar.py
Index: bar.py
===================================================================
--- bar.py      (revision 1)
+++ bar.py      (working copy)
@@ -4,9 +4,9 @@

 def main(argc, argv):
         print "Hello World!"
+
         return 0

 if __name__ == ‘__main__‘:
-        argv = sys.argv
-        argc = len(sys.argv)
+        argc, argv = len(sys.argv), sys.argv
         sys.exit(main(argc, argv))

veli$ vi Makefile
veli$ svn diff Makefile
Index: Makefile
===================================================================
--- Makefile    (revision 1)
+++ Makefile    (working copy)
@@ -1,7 +1,7 @@
 CC     = gcc
 CFLAGS = -g -Wall -m32

-all: foo
+all: foo bar

 foo: foo.o
        $(CC) $(CFLAGS) -o [email protected] $<
@@ -9,7 +9,12 @@
 foo.o: foo.c
        $(CC) $(CFLAGS) -c $<

+bar: bar.py
+       cp $< [email protected]
+       chmod +x [email protected]
+
 clean:
        rm -f *.o
 clobber: clean
-       rm -f foo
+       rm -f foo bar
+cl: clobber

2.3 创建webrev

veli$ export PATH=/var/tmp/webrev/bin:$PATH
veli$ webrev
WARNING: codereview(1) not found.
   SCM detected: subversion
 File list from: svn status ...  Done.
      Workspace: /tmp/sandbox
Compare against:
      Output to: /tmp/sandbox/webrev
   Output Files:
        demo/Makefile
                 patch cdiffs udiffs wdiffs sdiffs frames old new
        demo/bar.py
                 patch cdiffs udiffs wdiffs sdiffs frames old new
        demo/foo.c
                 patch cdiffs udiffs wdiffs sdiffs frames old new
 Generating PDF: Skipped: no output available
     index.html: Done.

2.4 通过浏览器查看

o

o foo.c.frames.html

o bar.py

o Makefile

时间: 2024-10-24 03:53:45

在Linux上创建webrev(cont)[基于svn]的相关文章

怎么使用Python和Flask在Linux上创建应用

无论你在linux上娱乐还是工作,这对你而言都是一个使用python来编程的很好的机会,也是一个从零基础开始学习python开发(http://www.maiziedu.com/course/python/)的一个好机会,pyhon学起来很有趣且在实际的应用如yum包管理器中很有用. 给大家分享一个关于很赞的教程贴,本篇教程会带你使用python和一个称为flask的微型框架来构建一个简单的应用,来显示诸如每个进程的内存使用,CPU百分比之类有用的信息. 前置需求 Python基础.列表.类.函

在LINUX上创建GIT服务器【转】

转自:http://blog.csdn.net/xiongmc/article/details/9176785 如果使用git的人数较少,可以使用下面的步骤快速部署一个git服务器环境. 1. Client生成 SSH 公钥,以便Server端识别. 每个需要使用git服务器的工程师,自己需要生成一个ssh公钥 进入自己的~/.ssh目录,看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是 id_dsa 或者 id_rsa. .pub 文件是公钥,另一个文件是密钥.假

在Linux上创建网页版的webrev

在Sun/Oracle工作了N(>12)年后,对网页版的webrev工具甚为喜欢,因为其易用性确实非常非常好.幸运的是,有工程师将webrev工具放到了GitHub上,而且支持git. 下面给出使用webrev工具创建网页版webrev的全过程. 当然,首先保证git在Linux(我用的是Ubuntu14.04)上已经安装好了. 第1步: Clone webrev from here veli$ cd /var/tmp veli$ git clone https://github.com/joy

在 Linux 上创建第一个 Service Fabric Java 应用程序

先决条件 开始之前,请安装 Service Fabric SDK.Azure CLI,并在 Linux 开发环境中设置开发群集. 如果使用 Mac OS X,则可使用 Vagrant 在虚拟机中设置 Linux 开发环境. 此外还需配置 Azure CLI 2.0(推荐)或 XPlat CLI,以便部署应用程序. 创建应用程序 Service Fabric 应用程序包含一个或多个服务,每个服务都在提供应用程序功能时具有特定角色. 适用于 Linux 的 Service Fabric SDK 包含

记一次在 Linux 上创建 Django 应用的过程

0 环境与目标 0.1 环境 服务器端 操作系统: Ubuntu 14.04.2 LTS 运行时: Python 3.4.0 客户机端 浏览器: Firefox 37.0.1 数据库客户端: Navicat Premium 11.1.10 0.2 目标 在服务器端开始一个 Django 工程,采用 PostgreSQL 数据库. 0.3 要点 Django 安装 PostgreSQL 安装 Django 初始化数据库 启动Django 服务 1 实施 1.1 Django 准备 1.1.1 安装

Linux上创建和更改硬链接和符号链接

概述 在本篇中,学习创建和管理硬链接和符号链接.学习: 创建硬或软链接 识别链接并知道它们的类型 理解复制与链接文件之间的区别 使用链接执行系统管理任务 链接简介 在存储设备上,文件或目录包含在一些数据块中.有关某个文件的信息包含在一个 inode 中,它记录了所有者.最后访问该文件的时间.文件的大小.它是否是目录,以及谁可以读取或写入它等信息.inode 编号也称为文件序列号 ,该编号在特定文件系统内是唯一的.一个 目录条目 包含一个文件或目录的名称,以及用来存储该文件或目录的信息的 inod

Linux上FTP部署:基于mariadb管理虚拟用户

FTP原理 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序.图1 FTP 的基本模型 FTP 是基于客户---服务器(C/S)模型而设计的,在客户端与 FTP 服务器之间建立两个连接. 开发任何基于 FTP 的客户端软件都必须遵循 FTP 的工作原理,FTP 的独特的优势同时也是与其它客户服务器程序最大的不同点就在于它在两台通信的主机之间使用了两条 TCP 连接,一条是数据连接,用于数据传送:另一条是控制连接,用于传送

在linux上创建nfs遇到的问题。

我们部署程序时,图片服务器是单独的一台服务器,有自己独立的域名.而应用部署在另一台服务器上,我们使用一些附件上传工具,比如ajaxfileupload上传附件时是无法跨域访问的.之前想的方案是,先上传到应用所在的服务器,然后使用java的ftp组件上传到图片服务器上(当然了,图片服务器上安装了ftp服务端).可是后来发现ftp上传比较慢而且不稳定,决定换成NFS来解决这个问题,当然了这个方案到底是好还是不好还有待检验,这里不做讨论.之前没有弄过这个玩意,这里记录下遇到的问题. 问题1:操作系统版

在Linux上创建磁盘配额

磁盘配额的概述及管理 为什么创建磁盘配额 在Linux根分区的磁盘空间耗尽时,Linux将无法再创建新的文件(包括程序运行的临时文件),从而导致服务程序崩溃,系统无法启动等故障现象. 为了避免出现类似问题,可以设置启用磁盘配额功能,对用户在指定文件系统(分区)中使用磁盘空间.文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保证系统存储空间的稳定性和持续可用性. 使用磁盘配额的前提条件 设置磁盘配额,需要安装 quota 软件包,用于配置和管理磁盘配额,在RHEL 6中,系统默认