VisualSVN的安装及冲突的处理

VisualSVN-Server的安装以及简单使用
TortoiseSVN的安装及其简单使用
VisualSVN的安装及冲突的处理

每次修改完代码之后还要回到项目所在文件夹进行提交,这样很麻烦。

VisualSVN是VS的一个SVN的插件,可以直接在VS上进行操作。

VisualSVN的安装

首先去官网下载

这里写图片描述

我下载的是

这里写图片描述

双击进行安装

这里写图片描述

点击Next

这里写图片描述

接受,然后点击下一步

这里写图片描述

选择你要在哪个版本上的vs上进行安装,然后点击Next.

这里写图片描述

点击Install进行安装

这里写图片描述

点击Finish,安装完成。

解决冲突

为了演示冲突的问题。现在提出一个需求。B用户为当前项目添加一句话输出B,C用户为当前项目添加一句话输出C。

最终效果为

namespace SvnTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("A");
            Console.WriteLine("A");
            Console.WriteLine("B");
            Console.WriteLine("C");
            Console.ReadKey();
        }
    }
}

现在打开VS,会发现菜单栏多了VISUALSVN

这里写图片描述

工具—>选项—>源代码管理

这里写图片描述

当前源代码管理插件,选择VisualSVN。

点击VSUALSVN—>Get Solution from Subversion…

这里写图片描述

输入仓储的地址,填写项目的名称,填写项目要存储的位置,点击OK。

之后会让输入用户名和密码。这里我用B用户。

这里写图片描述

点击OK

这里写图片描述

这时候对应存储的文件中已经下载好项目,并且vs中文件前边都多了一个绿点。

这代表它和服务器上的文件相同。

现在我更改代码为

namespace SvnTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("A");
            Console.WriteLine("A");
            Console.WriteLine("B");
            Console.ReadKey();
        }
    }
}

这里写图片描述

现在有的文件前变成了黄色的点。代表发生了更改。

为了模拟一下如何解决冲突。

我用用户C重新从服务器下载了一个项目(虽然B修改了文件,但B并没有提交,所以C现在下的项目和B下载的相同)。

并把文件改为

namespace SvnTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("A");
            Console.WriteLine("A");
            Console.WriteLine("C");
            Console.ReadKey();
        }
    }
}

现在用户C要把项目提交的服务器。

解决方案—>右键—>Update,检查一下有没有冲突

没啥问题后

解决方案—>右键—>Commit…

现在服务器最新的版本为C提交的这个版本。

现在用户B的那个项目。

解决方案—>右键—>Update,检查一下有没有冲突

这里写图片描述

这次出现了冲突,现在要解决这个冲突。

这里写图片描述

现在有的文件前变成了红色的点,此文件有冲突。

Program.cs—>右键—>Edit Text Conficts

这里写图片描述

左边的是服务器上的最新版本,右边的是用户B的。

比较两个版本的不同,在下边的Merged中进行修改。

我选择Mine版本中那个复选框,Console.WriteLine("B");这句话就会自动填充到,Merged中的红色区域中。

然后我在把C的内容复制到Merged

这里写图片描述

然后点击接受合并。

现在冲突就解决了

解决方案—>右击—>Update。看看还有啥问题没有。

没有的话,并且运行成功。

解决方案—>右击—>Commit…。进行提交

最后我用用户D从服务器上下载一个最新的版本,里边的内容为

namespace SvnTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("A");
            Console.WriteLine("A");
            Console.WriteLine("B");
            Console.WriteLine("C");
            Console.ReadKey();
        }
    }
}

小结

需求:B在原项目上添加一句代码输出B,C在原项目上添加一句代码输出C


B从服务器把项目下载下来

C从服务器把项目下载下来

C添加了一句代码输出C,提交到了服务器,形成新的版本

B添加了一句代码输出B,这时候要提交的时候会发生冲突。因为这时候服务器的版本和B当初下载的版本不一样。

这时候就需要比较现在服务器内容和B的内容的不同之处,来解决冲突。

为什么有时候开发系统的时候要按层分配任务?
按道理来说,按功能分的耦合性要远远小于按层分配任务啊,减少沟通成本。
但按层分配任务的话会大大减少冲突,基本上你负责的代码只有你在提交,但也会增加层与层之间人员的沟通成本,因为层与层之间的耦合性比较大,为了解决这个问题,就需要前期要有完善详细的文档。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值