您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

时间:2020-05-29 11:03:57  来源:  作者:

现在一般开发都是协同开发了,所以会用到版本控制系统,说白了就是大家一起开发一个项目,分别写不同的代码,然后需要把代码汇总到一起,大家可能互相需要对方写的代码,就是大家共同去写一套代码,这就是需要版本控制系统,把大家写的代码存放到一个地方,相当于一个备份服务器!

主流的版本控制系统,现在来说,就是Git和SVN了,而且Git似乎更加流行,当然也有很多公司使用SVN,我目前经历的几家公司都是在使用SVN,所以本篇文章就来详细的介绍那些你需要会的,在工作中经常用到的SVN技巧与使用!

首先看看啥是SVN

以下是百度百科的解释:

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

如果你还是有点不了解,建议多去百度搜搜,比如你可以这样搜索:“什么是SVN”,建议多看看百度百科和维基百科之类的,上面说的还是比较详细的!

要用它就得安装它

先来说windows上的安装,简单来说说,我们要使用SVN的话就需要安装一个客户端,好比你要听音乐的话就需要安装一个音乐软件在电脑上,当然,你可以选择安装qq音乐或者是网易云音乐!

那么SVN的话也是有版本可以选择的,在Windows上的话就是小乌龟,这是这个客户端的别名,人家叫做“TortoiseSVN”,因为Tortoise是乌龟的意思,所以就叫做小乌龟了,你看看它的图标:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

可以吧,是不是很可耐,我们要下载它:
https://tortoisesvn.net/downloads.html

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

根据自己的电脑情况,选择安装即可!

这里有些需要注意的地方:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

选择这个就行,另外在上面选择安装下载哪个版本之后,在跳出来的页面记的选择左下角的accept,然后等待下载,如果长时间没有下载可以手动点击页面上面第一行的链接,仔细看,那段英文还是可以看懂的,我这里就不贴图了。

如果你需要使用命令行的话,这里可以选择上:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后一路next即可!然后安装之后,你在电脑上随便找一个文件夹右键出现这个就代表安装成功:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后你也可以再操作:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这也代表是ok的!另外说一点啊,这个安装之后都是英文的,其实可以安装中文简体语言,但是嘞,我觉得还是用英文吧,真的,能用英文不要使用中文,咱可是高大上的程序员啊!

安装之后,搞起,看看怎么使用

上面都是准备工作,现在搞好了,怎么使用嘞,咱们一起来看看!

svn是个中心化的东西

啥意义嘞,就是说svn是有一个服务中心的,总的代码就在这个服务中心上,然后其他各个电脑上的客户端可以链接到这个中心,从而可以从中心拿取代码以及提交代码,画个图大概就是这样的:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

所以啊,一般如果你们是使用svn协同开发的话,你们就会有中心服务代码,这个是你不需要管的,你只需要在你的电脑上安装好svn客户端就行了,上述已经告诉你如何安装了。

可能有些人比较好奇,这个服务中心是啥在哪啊,这个一般就是svn服务器,也是需要搭建的,可以本地搭建,也可以远程搭建,公司一般就是远程大家,大家一起食使用了,这个大家感兴趣,我到时候可以另外写一篇教大家如何搭建svn服务器!

开始拉取代码吧(第一个重点)

一切准备就绪,你的本地上也安装了svn客户端,这个时候啊,就会有个人给你svn服务器的一个项目地址,比如以我本地搭建的svn服务器地址为例,给你看看,是这个样子的:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

比如说,这里要让你参与simpleJAVA项目的开发,这个时候就会给你一个地址:

https://LAPTOP-GO8995UD:8443/svn/SVNdemo-ithuangqing/simplejava

然后还会给你分配一个用户名和密码:

username: user1 password: user1

拿到这些之后,你就可以拉取代码了,首先你先想想你要把拉取下来的代码放在哪里,比如桌面上,可以新建一个文件夹比如叫做“project”

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后打开这个文件夹,接着右键出现这个,点击这个:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

点击之后就会弹出这个窗口:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这里意思就是你要连接svn服务中心了,但是也不能随便连啊,需要用户名和密码,这个是给过你的,我们填写上去,注意这里的左下角,是否记住密码:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这样就拉取成功了,但是你看看拉取下来的代码,我们服务中心上这个项目叫做simplejava,其实我也想拉取下来就是这个simplejava,这样拉取下来的都是项目中的文件,怎么办?

其实可以这样做:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

我们点击这个Choose items,可以看到我们要来取得这个项目的内容,这个时候我们可以把这个项目名称去掉,也就是专这样:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这样就可以看到更广的一面,然后选择我们要拉取得那个项目,然后ok,拉去下来就是这样得了

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

权限问题

但是这样真的可以吗?答案是有的时候还真不可以,比如我们再试一次:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

好,这个没问题,我们再试着看看上一级:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

吆喝,不行了,这是咋回事,其实也好理解啊,人家总体的代码也不能说你想看就想看啊,让你做啥就做啥得了,不是你做的项目你看的全力都没有,所以啊这里是有权限的,你看看服务中心这些:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这里每一个文件夹其实都是可以分配权限的,也就是说,让你参与进来开发,会给你创建一个属于你的账户,但是你的账户是有读写权限的,有些你可以看,而有些你是看不了的。

所以,有的时候拿到账户和地址之后,发现出现问题,拿去不到代码,那就问问是不是权限没给你开,有的时候还真的是权限没开,我就碰到过。

至于如何设置权限啥的,这是svn服务器这块的知识,咱这里先不涉及,等咱聊到svn服务器搭建的时候再说吧!

那你可能要问了,我看不到那咋办啊,简单啊,自己在本地先创建项目文件夹,比如要拉取simplejava,就先创建一个呗,然后再拉取,一样的:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

好啦,写写代码,咱也提交吧

那以上准备工作搞定之后,你就该写代码啦,来来,打开咱拉取的代码:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

我们看到里面就一个Java类,来来,咱给他修改修改:

public class Test1 {
    public static void main(String[] args) {
        System.out.println("欢迎学习svn!");
        System.out.println("大家好,我是用户user1");
    }
}

可以吧,ok,现在咱也写代码上去了,接下来看看变化:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

看看,这里出现红感叹号,难道是错误?其实不是的,这里代表代码有改变了,毕竟你新增加了代码嘛,接下来就把自己新增加的代码提交上去吧,可以这样操作:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

右键需要提交的文件,然后点击commit,弹出如下框框

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后就ok了,看一下,是不是又变回绿色了。

增加一个新东西

可以吧,第一次提交,很有成就感,接下来看看,假如说我们新增加了一个Java类嘞,来来,写一个:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这里我们创建了一个新的User类,其实吧,被svn管理起来之后,就会在文件上面显示相对应的表示,比如正常的java文件上面显示一个绿色的勾号,但是吧,有的时候这玩意会出现问题,比如这新增加的一个文件应该在上面显示一个蓝色的问号,大致的标识是这样(对于Java文件来说)

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

要记住了,新增加的一个文件属于未知文件,我们需要把它添加进我们的版本库:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

添加进来之后就被识别了

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

是一个蓝色的+号,接着我们就可以把它提交了

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

提交步骤和上面的类似

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

我想删除一个文件,怎么搞

有的时候可能需要删掉一个文件,就比如把刚才创建的User给删除了,我们可以这样做:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这个时候你删除之后,突然后悔了怎么搞?你使劲的按键盘上的Ctrl+Z,好像没什么卵用,你需要这样操作:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

记住,是点击空白处,不过你如果真的想删除的话,当你上述操作删除之后,其实在服务中心上的文件还是没有删除,你还需要进行提交,点击空白处,选择提交:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这个时候就成功删除啦!

我怎么提交不上去啊(更新代码)

我们使用svn是进行协同开发,也就是说这些代码并不是只有你自己在写,其他人也在写,比如别人对Test1进行了修改,比如这样:

public class Test1 {
    public static void main(String[] args) {
        System.out.println("欢迎学习svn!");
        System.out.println("大家好,我是用户user1");
        System.out.println("大叫好,我是用户ithuangqing");
    }
}

你看,这是另外一个人添加的新代码,这时候你再看看你的代码,你的还是这样的:

public class Test1 {
    public static void main(String[] args) {
        System.out.println("欢迎学习svn!");
        System.out.println("大家好,我是用户user1");
    }
}

比如,你开始修改这个代码:

public class Test1 {
    public static void main(String[] args) {
        System.out.println("欢迎学习svn!");
        System.out.println("大家好,我是用户user1,好好学习天天向上!");
    }
}

然后你也开始提交,但是你看

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

我去,报错了报错了,肿么办?来,先翻译一句英文:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

知道咋回事不,就是服务器上的代码改变了,你这里不是最新的,你需要更新一下,那就更新一下:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后再看看更新下来的代码:

public class Test1 {
    public static void main(String[] args) {
        System.out.println("欢迎学习svn!");
        System.out.println("大家好,我是用户user1,好好学习天天向上!");
        System.out.println("大叫好,我是用户ithuangqing");
    }
}

看,是不是有用户ithuangqing添加的代码了,然后提交吧,这下就保证成功了的!

我去,冲突是咋回事

协同开发肯定会遇到的一个问题就是冲突了,一般的话就是你和别人修改了同样位置上的代码,来看个例子:

首先别人修改了这行代码:

public class Test1 {
    public static void main(String[] args) {
        System.out.println("欢迎学习svn!");
        System.out.println("大家好,我是用户user1,好好学习天天向上!-- 别学了,学不会的,哈哈");
        System.out.println("大叫好,我是用户ithuangqing");
    }
}

然后你也修改了这行代码:

public class Test1 {
    public static void main(String[] args) {
        System.out.println("欢迎学习svn!");
        System.out.println("大家好,我是用户user1,好好学习天天向上!真难啊");
        System.out.println("大叫好,我是用户ithuangqing");
    }
}

这里你需要捋一下,就是上面人家已经修改了这段代码,并且提交上去了,你这里没有先更新,而是直接修改了代码,然后你开始提交,发现这个错误:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这个问题之前说过了,那就去更新呗,结果:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这就出现冲突了,其实也好理解,你俩都去修改这段代码,人家的已经提交上去,你去更新,相当于把服务器上的这行代码拉去下来,然后发现你也修改了,那完犊子了,谁修改的是对的呢?应该留下哪个呢?

这时候就需要解决冲突了,这个时候你再看文件:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这都是啥玩意?这是因为出现冲突了,需要你解决冲突,怎么解决嘞?我们打开源文件看看:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

这个时候就需要你处理,该留下哪段代码,这个是需要和别人商量的,看看是哪里出问题了,一起看下最终决定六留下哪段代码,比如最终你自己的修改是对的,那就把这些删除掉:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后就成这样了:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后你再看这些文件:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

不是已经解决了冲突了吗?是的,你是解决了冲突,但是你没有告诉svn啊,你得给svn说声冲突解决了,这样操作:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后这个:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

点就ok就彻底解决冲突啦:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

冲突解决了之后,你就可以正常提交你的修改啦!(之前提交不成功,需要更新,更新遇到了冲突,解决冲突之后,再次提交就没问题啦)

查看日志

日志这个玩意,在以后的开发中务必引起重视,在这个svn里面,我们也是可以查看日志的,比如我们查看这个类的日志:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

在这里可以看到自己和他人对这个文件的一些修改。

版本回滚需要重视

这个功能也是使用比较多的,但是刚开始的话会觉得有点摸不着头脑,比如我们在写代码的时候,后来发现自己写的代码有问题,结果已经提交上去了,别人拉取咱的代码,那肯定出问题啊,怎么搞,这个时候咱们就可以使用版本回滚,来看看具体怎么操作。

比如现在我们需要写个功能,这样写的:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后我们也提交上去了,咋整,后悔了,能不能时光倒流,人家更新代码的话,会更新到我的错误代码,你看看人家原来是这样的:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后人家更新了下,就是这样的:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

啪啪打脸啊,不行,我得把自己的错误代码干掉,怎么搞嘞,那就是版本回滚,看着:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后选择需要回滚的版本:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

然后你再看,其实之前的错误代码已经没有了。

注意注意注意!

当你写了错误的代码提交上去之后,别人更新会更新到你的代码,但是这个时候可能只有你知道这段代码有问题,而你想重新写,那就像上面那样,你进行版本回滚,之前的错误代码都没了,你可以重新写,但是,别人现在更新还是会得到你之前的错误代码。

所以这个时候你需要commit一下,把svn服务器上的提交的错误代码也恢复到原来的版本,记住回滚之后需要提交一下!

如果你回滚之后没有commit,而是继续写正确的代码,就会是另外一种情况(不commit的话是没有真正回滚的,本地回滚,但是远程服务器没有),这个时候当你把正确的代码写完之后,提交上去的话,会提示你更新,你一旦更新,就会产生冲突,和你之前的错误代码冲突了,这个时候你需要解决冲突,留下正确的代码,然后跟提交上去,这个时候别人再次更新就会得到你正确的代码了。

有没有更好的方式

以上那种回滚导致的错误是使用这种回滚方式:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

实测中会出现回滚之后没有commit就写了新的代码,紧接着提交的时候会提示更新,更新会出现冲突,但是如果使用这种方式回滚:

新公司还是使用SVN,一怒之下写了这篇保姆级小白教程

 

即时回滚之后没有commit就写了新的正确的代码,再次commit提交依然可以完成,不会像上面那样,提示你更新,然后更新会出现冲突!

至于为什么会出现这样的情况,我们有深入的研究,后期如有需要会继续分享!

总结

关于svn的使用,对于一个刚入职初次使用svn的朋友来说已经够用了,主要的还是要明白一些操作概念,然后熟练掌握更新和提交,一般在写代码之前先更新一下,避免出现冲突,其他更多的就是在实际的使用中遇到新的问题再查资料或者请教他人快速解决,快速积累经验!

感谢各位大大的阅读

来源 :公众号| 编码之外



Tags:SVN   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
安装找到64位的包 一路nextfinish安装完成之后,右键就会出现 SVN CHeckout表示svn检出,点击它 URL of repository表示的是库的路径,这个我们可以下面这种方式来获得 Ch...【详细内容】
2020-07-23  Tags: SVN  点击:(102)  评论:(0)  加入收藏
现在一般开发都是协同开发了,所以会用到版本控制系统,说白了就是大家一起开发一个项目,分别写不同的代码,然后需要把代码汇总到一起,大家可能互相需要对方写的代码,就是大家共同去...【详细内容】
2020-05-29  Tags: SVN  点击:(48)  评论:(0)  加入收藏
◆◆SVN服务器的安装◆◆1)下载VisualSVN Server,官网:https://www.visualsvn.com/server/download,根据要选择32位和64为位。(V3.3.1版本支持操作系统环境:WindowsVista 、Windo...【详细内容】
2020-03-19  Tags: SVN  点击:(52)  评论:(0)  加入收藏
对于所有版本控制系统,项目文件都位于远程服务器上,当您在本地计算机上完成工作时,可以将文件推送到远程服务器上。但是,决定使用集中版本控制系统(如SVN)还是分布式版本控制系统(...【详细内容】
2019-12-04  Tags: SVN  点击:(111)  评论:(0)  加入收藏
subversion可以结合apache httpd提供服务,这样子就可以通过http提供服务。 安装yum -y install subversion httpd mod_dav_svn 配置文件安装完以后,可以在/etc/httpd/conf.mod...【详细内容】
2019-11-22  Tags: SVN  点击:(184)  评论:(0)  加入收藏
导出原SVN版本库dunp方式可分为全量导出和增量导出全量导出:压缩备份:[root@aliyun home] svnadmin dump /home/svn/repos1 | gzip > ./repos1.gz不压缩备份:[root@aliyun home...【详细内容】
2019-11-20  Tags: SVN  点击:(83)  评论:(0)  加入收藏
SVN(SubVersion)的基本工作思路是这样的:在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序,由源代码库管理员统一管理这些源程序。...【详细内容】
2019-10-28  Tags: SVN  点击:(107)  评论:(0)  加入收藏
在Linux服务上修改代码很麻烦,使用个版本工具会节省开发工具,有人说为啥不用Git而是选择SVN。因为平时写项目也就两三个人,代码量也比较小,本人比较懒,学东西也比较慢,对于Git的了...【详细内容】
2019-10-14  Tags: SVN  点击:(130)  评论:(0)  加入收藏
1、查看是否安装SVNsvn --versionCentOS下SVN服务的启动与关闭2、启动SVN服务:svnserve -d -r /home/svn/home/svn 为版本库的根目录;3、关闭SVN服务:killallsvnserve #关闭svn...【详细内容】
2019-09-29  Tags: SVN  点击:(158)  评论:(0)  加入收藏
作者:yoodb来源:https://blog.yoodb.com/yoodb/article/detail/1518 svnadmin是一个Java开发的管理svn服务器的项目用户的web应用。安装好svn服务器端把svnadmin.war部署至tom...【详细内容】
2019-08-16  Tags: SVN  点击:(194)  评论:(0)  加入收藏
▌简易百科推荐
本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。前...【详细内容】
2021-12-28  linux技术栈    Tags:glibc   点击:(3)  评论:(0)  加入收藏
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(2)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(10)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(20)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(25)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条