idea 创建文件时自动添加到版本管理器(svn)

idea 创建文件时自动添加到版本管理器(svn),第1张

开发一个新功能时,如果不添加文件版本管理,整体提交的时候就容易把这些文件漏掉,导致别人更新不到。影响开发效率。

1,打开idea --File--Settings--Version Control--Confirmation , 当文件被创建的选项 ,选择show options 或者 Add silently(静默添加)

2,设置了静默添加之后,新建文件就会被版本管理器管理,到svn的Default ChangeList里面 。未被版本管理的 在Unversioned Files目录下,因为用idea打开项目的时候,会生成很多本地的配置文件,都在Unversioned Files目录,如果新建的文件不直接添加到版本管理器,提交的时候很容易漏提交。

3,提交的时候,选中Default List 右键--commit,填写备注,直接提交。也可以Revert

4,还可以自定义changList ,比如本地跑项目的配置文件 application.pro..,不需要提交,建一个ignoreList,把配置文件移到里面,这样就避免了误提交。

树莓派自带svn就不用安装了,安装也很简单,参考别的百度经验也可以进行。开篇主要讲解如何使用。

首先使用svn --help查看都有什么指令。

常用的命令不是太多,但是首先咱得先从服务器把代码下下来不是。

svn co http:XXXXXXXXX

或者svn checkout http:XXXXX

其中co是checkout的缩写,就如后面的up是update的缩写一样。

然后我们新建一个test.c然后提交。

首先我们得通过

svn add test.c

加到本地的库里,就是放到自家的版本库.svn里,然后

svn ci -m "we add a new file"

这样就提交到了远程的服务器HEAD库里了,其中ci是commited的缩写。

大家可以看到版本又10变成了11。

接下来得说下svn的不同的版本的关键字。

HEAD

版本库中的最新版本 我理解就是当前服务器的最新版本。

BASE

工作拷贝中的原始修订版本 我理解就是刚刚co下来的.svn里的内容。

COMMITED

在BASE版本之前(或者base) 一个项目的最后修改的版本。我理解就是你改完的版本

PREV

一个项目最后修改版本之前的那个版本 也即COMMNITED-1。

下面就用这几个关键字来熟悉一些命令。

svn log --revision HEAD

可以看出以上命令是说明的最近一次服务器代码库的改动。

svn diff --revision HEAD

可以看出这是对本地和远程版本之间的对比。由于我刚提交了一次,所以这次不提示任何信息,两者是一样的。

svn diff --revision BASE:HEAD a

这个命令意思就是比较你本地的没有更改过的库,和远端服务器最新的 a文件的差别

svn log --revision BASE:HEAD a

这个命令显示自从上次up更新以来我们对a所做的所有更改

svn up -r PREV a

将a文件更新到之前的版本

前面我们从服务器checkout下代码下来的时候,就已经包含了.svn目录。请不要更改这个目录,因为svn使用它来管理工作拷贝。

下面详细的说一下svn的update *** 作。当大家共同维护一个项目时,如果别人改了代码提交了,你想得到那些更改融合到你的代码中,就可以用svn update让你的工作拷贝和最新的版本同步。

就比如下图,另一个人用tortoiseSVN更改了a,然后commit上传了,我用命令行up就能把更改融合到我本地的a文件。

我们可以看到a这个文件前面有个U,代表从服务器收到了其他人提交到服务器的修改。

A foo

代表文件foo被加到了工作拷贝

D foo

代表文件foo被添加到了工作拷贝

R foo

代表文件foo被删除,而一个新的同样名字的项目添加进来,他们具有同样的名字,但是版本库会把他们看做具备不同历史的不同对象。

G foo

文件foo接收到版本库的更改,你的本地文件也已经已经修改,但这两者不冲突,svn已经成功将服务器版本库和本地文件合并,没有发生任何问题。

C foo

文件foo的修改与服务器冲突,服务器的修改与你的修改冲突了,比如第一行他写了123 你写了321 没法融合,因为怎么弄不是把他的123抹去,就是把你的321抹去,所以你要和那人交流,这个后面再说。

当你想改变当下的目录结构时,请你使用svn add ,svn delete ,svn copy , svn move。

svn add foo 会将文件、目录或者符号链接等添加到版本库。如果foo是目录的话,里面的文件也会被添加到进去,如果你只想添加foo目录,使用--non-recursive(-N)不递归添加文件参数。

svn delete foo 将文件、目录或者符号链接foo从版本库中删除,如果foo是文件,它马上从工作拷贝中删除,如果是目录,不会被删除,只有在committed提交的时候,foo才会从本地工作拷贝和版本库中删除。

svn copy foo bar建立一个新的项目bar作为foo的复制品,在下一次提交时会将bar添加到版本库,这种拷贝历史将会被记录下来(按照来自foo的方式记录)。

svn move foo bar 这个命令等同于svn copy foo bar;svn delete foo完全相同,bar作为foo的拷贝,foo被删除,svn move不会建立中介目录。

svn mkdir foo

这个命令同运行 mkdir foosvn add foo相同,也就是创建一个叫做foo的目录,并且预定添加到版本库。

以上这些都是svn-book的内容。

原理是先把你对目录的修改汇集到本地的工作拷贝,然后一个提交动作,这样远端的版本库就能反映你的改动。

其实可以直接对远端的版本库进行 *** 作,这必须需要通过svn mkdir,svn copy,svn move和svn delete这些命令直接 *** 作远端URL。但是就没有本地拷贝做缓冲了,每次提交自动生效。

查看你的修改的情况

svn status

查看你本地修改的详情

svn diff

如果想打包成diff文件 可以svn diff >c .diff 打包成diff文件。用tortoiseSVN可以打开,查看

如果想会退到原来的up的工作拷贝

svn revert

spring-cloud-dev.properties配置如下:

spring-cloud-test.properties配置如下:

spring-cloud-pro.properties配置如下:

分别输入下列地址看看测试结果

4. 客户端pom文件添加


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11602708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存