Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7926227
  • 博文数量: 124
  • 博客积分: 2880
  • 博客等级: 少校
  • 技术积分: 873
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-16 17:08
文章分类

全部博文(124)

文章存档

2011年(28)

2010年(60)

2009年(36)

我的朋友

分类: 项目管理

2011-10-09 17:49:02


在windows下使用svn服务, 在安装了VisualSVN以后, 利用其目录下的bin就可以了, 不要使用VisualSVN的服务, 它是基于http和https的.
下面介绍SVN的命令行使用情况:

在windows下利用TortoiseSVN建立一个svn管理的库
1. 在制定的盘符下创建一个目录, 例如"MySVN";
2. 在该目录下或者鼠标在目录上, 点击鼠标右键, TortoiseSVN->Create repository here;
3. 在该目录下会自动创建很多文件和目录;
4. 创建完成.

在windows利用命令行创建SVN管理的库
svnadmin create d:\MySVN
效果同利用TortoiseSVN.

手动启动独立的svn服务
svnserve.exe --daemon --root drive:\path\to\repository

五、配置用户和权限
用文本编辑器打开E:\svn\repos1\conf目录,修改svnserve.conf:
将:
# password-db = passwd
改为:
password-db = passwd
即去掉前面的 # 注释符,注意前面不能有空格。
然后修改同目录的passwd文件,增加一个帐号:
将:
[users]
# harry = harryssecret
# sally = sallyssecret
增加帐号:
[users]
#harry = harryssecret
#sally = sallyssecret
test = test

在windows提示符下执行:
svnserve --daemon --root I:\mysvn
向SVN库中导入目录:
svn import -m "create initial" dev_unix svn://192.168.26.165/unixdev --username whan --password 123456

===============================

例子:
创建目录
I:\mysvn\dev_unix
在目录I:\mysvn\dev_unix下创建SVN库, 并修改配置文件中的配置和添加用户whan, 密码:123456
使用命令svnserve --daemon --root I:\mysvn启动svn服务
在客户端执行如下命令导入库:
svn import -m "create initial" unixdev svn://192.168.26.165/dev_unix --username whan --password 123456
 

===========================
清除目录下的SVN信息
在项目开发和日常文档管理时,用到了SVN,由于要把一些文档发给同事,这时想删除SVN版本信息文件,于是上网在SVN中文论坛找到了一份资料:
删除 .svn 文件
一、在linux下
删除这些目录是很简单的,命令如下
find . -type d -name ".svn"|xargs rm -rf
或者
find . -type d -iname ".svn" -exec rm -rf {} \;  

二、在windows下用以下法子:
1、在项目平级的目录,执行dos命令:
xcopy project_dir project_dir_1 /s /i
2、或者在项目根目录执行以下dos命令
for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"
其实第二种方法可以用来干很多事的,比如把代码中的.svn替换为任意其他文件名并在硬盘根目录下执行,就可以从硬盘上删除所有的这个文件啦。
3、添加注册表(亲自动手测试过)
可以将“快速删除SVN版本信息”命名增加到资源管理器的右键上,这样,鼠标点两下就能把选中目录下的所有.svn目录干掉了。
代码为:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="快速删除SVN版本信息"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat"
将这段代码保存为一个.reg文件,双击确认导入注册表中不完整,后来自己手工添加。注意:文件“批处理文件删除SVN版本信息.bat”不能放 在有空格的文件夹下,确认删除时请看一下当前目录不要删除不该删的目录下的SVN版本信息。不知道怎么改进“cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat”。

批处理文件删除SVN版本信息.bat文件内容如下:
@echo off
echo ***********************************************************
echo 清除SVN版本信 息                                                                                              
echo ***********************************************************
:start
::启动过程,切换目录
:set pwd=%cd%
:cd %1
echo 工作目录是:& chdir
:input
::获取输入,根据输入进行处理
set source=:
set /p source=确定要清楚当前目录下的.svn信息吗?[Y/N/Q]
set "source=%source:"=%"
if "%source%"=="y" goto clean
if "%source%"=="Y" goto clean
if "%source%"=="n" goto noclean
if "%source%"=="N" goto noclean
if "%source%"=="q" goto end
if "%source%"=="Q" goto end
goto input
:clean
::主处理过程,执行清理工作
@echo on
@for /d /r %%c in (.svn) do @if exist %%c ( rd /s /q %%c & echo    删除目录%%c)
@echo off
echo "当前目录下的svn信息已清除"
goto end
:noclean
::分支过程,取消清理工作
echo "svn信息清楚操作已取消"
goto end
:end
::退出程序
cd "%pwd%"
pause

注:最后一种方法,如果出现错误,就打开注册表,找到对应的项,吧“cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat “直接写入注册表中即可使用
-=================================================
 
 
 
 
SVN常用命令  2011-02-15 16:56:07|  分类: SVN |  标签: |字号大中小 订阅 .
      1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
        2、往版本库中添加新的文件
svn add file
例如:svn addtest.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
        3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
        4、加锁/解锁
svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH
        5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
        6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
        7、删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
        8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
        9、查看文件详细信息
svn info path
例如:svn info test.php
        10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
        11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
        12、SVN 帮助
svn help
svn help ci
——————————————————————————
以上是常用命令,下面写几个不经常用的
——————————————————————————
        13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
        14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法:
        1、mkdir PATH…
        2、mkdir URL…
创建版本控制的目录。
        1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
        2、每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两个情况下,所有的中间目录都必须事先存在。
        15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
         用法: revert PATH…
         注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录
        16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
          2、switch –relocate FROM TO [PATH...]
          1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
          2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。
          17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
         18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
阅读(2205) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~