SVN(一次检出&二次检出)

Posted 晒太阳的仙人掌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN(一次检出&二次检出)相关的知识,希望对你有一定的参考价值。

一次检出:

》进入经历文件夹

》输入svn checkout指令

》输入电脑密码

》输入用户名

》输入密码

》检出成功

 

第二次检出:

》进入小涛文件夹

》输入svn checkout指令

》检出成功

 

只要输入过一次账号密码后, 终端会自动记录我们的密码

 

通过指定的账号密码检出

svn checkout http://192.168.15.155/svn/weibo/ --username=ls --password=ls

 

 

 

 

 

SVN的本质是通过一个文件夹来管理源代码

 

默认情况下, 用于管理源代码的文件夹是隐藏的, 这个隐藏文件夹的名称叫做.svn

 

 

 

 

 

注意: 新建文件或文件夹之后如果直接提交(直接commit)会报如下错误:

 

is not under version control

 

该错误的含义是: 提示我们提交的文件没有纳入版本控制

 

 

 

注意: 在提交代码时必须写上注释(认真写), 否则回报如下错误

 

Could not use external editor to fetch log message;

 

 

 

 

 

注意: svn add只会将文件添加到本地, 不会添加到服务器

 

 

 

 

 

注意:如果说利用SVN管理源代码, 就不能直接在项目中删除源文件

 

 

 

 

 

如果修改文件之后, 并且文件没有提交commit 想反悔,可以使用SVN revert指令让文件回到上一次提交时的状态

 

 

 

 

 

update除了可以更新服务器最新的代码以外还可以更新到指定版本。

 

每次提交代码之后, SVN的版本号都会自动加1. 正式因为版本每次会自动加1 也就是说版本号是唯一的。 所以我们可以通过版本号更新到指定版本的代码

 

 

 

 

 

版本控制器中最常见的两个问题:

 

1.超时

 

SVN 使用SVN有一个原则: 先更新再提交

 

只有本地的版本号大于等于服务器的版本号时才能提交, 否则会报一个out of data错误;

 

 

 

ls:R8

 

manager :R11

 

服务器: R11

 

 

 

 

 

2.冲突:

 

当多个人修改了同一个文件的同一行代码会导致冲突

 

我: main.c  11  123

 

其它人: main.c 11 abc

 

其它人先提交了代码

 

我再提交代码就会有冲突,

 

Conflict discovered in 提示我们如何解决问题

 

(mc) mine-conflict,  代表用我们的代码替换服务器的代码。

 

本地的代码只保留我们自己写的

 

 

 

(tc) theirs-conflict, 代表用服务器代码替换我们的代码

 

本地的代码只保留服务器的, 会自动删除我们的

 

 

 

(p) postpone 自己手动解决。

 

本地文件中会同时保留服务器代码和本地代码

 

会在本地创建3个备份

 

main.c.mine 备课自己最新的代码

 

main.c.r17 本地修改之前的版本

 

main.c.r18 服务器最新版本

 

<<<<<<<  ======中间存放的是我们自己修改的代码

 

=======   >>>>>>> 中间存放的是服务器最新的代码

 

 

 

注意: 手动解决完冲突之后, 需要告诉SVN服务器我们已经解决冲突了, 这样才能保证数据的安全性和SVN的可靠性

 

svn resolved 文件名称

 

 

 

—————————

 

 

 

注意: 在工具中Repositories中的仓库是服务器的仓库

 

 

 

1.新建一个本地仓库

$ git init

 

2.配置仓库

》告诉git你是谁

git config user.name lnj

》告诉git怎么联系你

git config user.email [email protected]

 

》上面一种配置方式是一次性的配置, 会配置到被管理文件的。git文件夹下

》下面一种配置方式是一劳永逸的方式:

git config --global user.name lmj

git config --global user.email [email protected]

 

》如何学习git指令

>学习git指令和SVN指令的学习其实是一样的, 只不过展现的方式不太一样, git是通过使用指南的方式告诉我们某一个指令如何使用

>这个指南其实是一个不可编辑的vim

Q退出指南

按空格下一页

control + B 上一页

/需要搜索的内容 可以进行搜索

 

 

git常规指令

git status 查看文件状态

git add 添加文件到暂存区

git commit 文件名称   添加文件到本地仓库

注意:如果没有在commit后面加上 -m说明修改了什么, 会自动进入vim界面, 要求我们输入修改信息

按键盘上的 i 代表开始输入内容

输入完毕之后按 esc 然后按 wq

所以: 如果以后在终端中提交最好在后面加上-m

》注意: git中的addSVN中的add不太一样, SVN中只需要add一次, git中每次新建或者修改之后都需要重新add

 

1.为添加之前的颜色

红色 代表在工作区

2.添加到暂存区之后的颜色

绿色 代码在暂存区

 

 

》注意: git默认没有简写指令

》注意: 一般情况下不建议自定义简写指令

git中的简写称之为起别名

 

> 查看log

git log 文件名

》注意: GIt中的版本号是一个40的哈希值, SVN中的版本号是一个递增的整数

》已经提交

git reset —hard HEAD^ 返回上一个版本

其中—hard代表强制重置

git reset —hard 版本号(只需要写前7位)

》未提交

git checkout 文件名 回退到上一次提交的版本

git reset —hard HEAD  回退到上一次提交的版, 注意HEAD后面没有尖号^

 

 

c9ad690 HEAD@{0}: commit: main.c

 

7026f99 HEAD@{1}: commit: 输出结果

 

e950c89 HEAD@{2}: commit: 新增输入

 

c7bf91c HEAD@{3}: commit: 添加变量

 

cbd9e52 HEAD@{4}: commit: 删除print函数

 

45ea44d HEAD@{5}: commit: 添加了printf函数

 

0da06d8 HEAD@{6}: commit (initial): i

 

 

 

>git reflog  查看所有修改信息(所有版本)

 

 

》查看文件被修改的什么地方

git diff 文件名

》如果显示绿色代表新增

》如果显示红色代表删除

 

 

远程仓库

SVN需要一个单独的服务器

Git不需要: 文件中、U盘中、云上、githubOSChina...

 

1.新建git远程仓库

git init —bare

注意: 这个仓库仅仅是用于管理代码, 不参与开发

 

2.项目经理初始化项目

2.1先克隆一份空得仓库到本地

git clone /Users/apple/Desktop/working/公司远程仓库

 

2.2忽略不需要加入版本控制器的文件以及文件夹

.gitignore

注意: 配置忽略文件只需要到github上搜索.gitignore拷贝别人写好的代码即可

配置.gitignore一定要在和.git隐藏文件夹同一级的目录下

2.3生成好.gitignore文件之后, 还需要将.gitignore文件添加到版本控制

git add  .gitignore

git commit .gitignore -m””

 

2.4新建项目

source conrol—>commit  将代码提交到本地仓库

source conrol—>push 将代码提交到远程仓库

 

 

git中默认就会创建一个分支, 这个分支叫做origin/master 相当于svn中的trunk

 

 

专业人员只需要在git仓库的hooks文件夹中写一些指令, 就可以完成自动测试(压力测试、自动测试、集成测试、冒烟测试、。。。)

 

 

SVN一样, 如果服务器仓库的代码被修改了, 我们再提交代码也会报错。

fetch first == out of data

 

总结:

gitsvn最大的区别

1.git每次修改新增都需要add

2.git每台电脑都有一个仓库

3.git是先提交到本地仓库, 再提交到远程仓库

 

 

 

 

新人服务器搭建

1.新建一个新人服务器

2.初始化仓库

git init --bare

3.添加一个新的远程仓库

source control —> master —>config —>remotes —>add —> add remote

4.将经理最新的代码提交到新人服务器

5.经理分配新人服务器的地址给新人

 

 

 

GIT的分支管理

》在本地代码库给项目打上一个标签

git tag -a v1.0 -m ‘Version 1.0’

》查看当前标签

git tag

注意: 此时此刻打上的这个标签仅仅是一个本地标签。(和服务器没有关系)

》将标签添推送到远程代码库中

git push origin v1.0

 

 

1.开发

2.发布

3.保存稳定版本

4.继续开发

5.出现bug

6.分配员工到分支上修复bug

>员工从服务器下载最新代码

》员工利用git checkout v1.0指令快速切换到1.0版本

》根据提示:开启一个新的分支开始修复代码

git checkout -b 1.0bug_fix

 

7.合并修复后的代码到主线

8.备份稳定版本

 

 

通过Xcode将代码提交到github上, 把仓库放在github

 

 

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

1.注册一个github账号

2.配置SSH Keys 只要配置了SSH Keys就可以和github无缝衔接

 

》点击昵称来到个人主页

点击主页中的设置(setting

点击SSH Keys

》点击 generating SSH keys

 

1.检查本地的ssh keys

用户目录 ls -al ~/.ssh

2.如果文件夹不存在需要手动创建一个

mkdir .ssh

 

3.根据github的提示2生成ssh keys

.ssh目录下执行 ssh-keygen -t rsa -C "[email protected]

输入完成之后连续按下回车, 知道出现牛逼的图形位置

4.生成完公钥和私钥之后输入

ls -la查看是否生成成功   id_rsa(私钥) id_rsa.pub(公钥)

5.根据提示3获得公钥

pbcopy < ~/.ssh/id_rsa.pub

6.点击 setting — ssh key —>add ssh key

将刚才获取到得公钥添加进去

 

7.更具github4步提示, 验证公钥

验证成功网页上的灰色圆点会变成绿色

 

8.拷贝到公钥之后打开github主页

》点击仓库(Repositories

》再点击new来到github创建仓库界面

 

9.通过github提供的地址下载一个空得仓库到本地

》创建一个新的项目到本地仓库文件夹中

》利用Xcode提交代码到github

》注意: 要求输入用户名密码时候, 输入的是github上显示的昵称而不是登录账号

 

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

 

现实生活:

运动场 == 物理仿真器

跑步 == 物理仿真行为

== 仿真元素

 

// 1.创建物理仿真器

// 2.创建物理仿真行为

// 3.将物理仿真行为添加到仿真器中

 

 

1.可以将需要导航的位置丢给系统自带的APP进行导航

2.发送网络请求到公司服务器获取导航数据, 然后自己手动绘制导航

3.利用三方SDK实现导航(百度)

 

 

>当点击开始导航时获取用户输入的起点和终点

>利用GEO对象进行地理编码获取到地标对象(CLPlacemark )

>再利用获取到的地标对象(CLPlacemark)创建MKPlacemark

>利用MKPlacemark创建起点的item

 

>终点和起点逻辑一样

 

 

 

1.发送请求到苹果的服务器获取导航路线信息

2.根据服务器返回的路线信息自己绘制导航路线

 

 

百度地图在2.5以前是不支持64位手机

 

 

注意: 想要使用百度地图SDK必须成为百度的开发者, 并且创建自己的应用

>创建好应用之后就可以拿到访问百度地图的KEY

>将创建应用时填写的安全码填入到应用程序的bundle identifier

应用程序中的bundle identifier必须和百度开发者网站上的安全吗一致

 

libbaidumapapi.a静态库==百度以及实现好的功能

注意: 静态库是区分真机和模拟器的, 如果在真机上使用模拟器的静态库是不可以运行的

 

1.> "_SCNetworkReachabilityCreateWithName", referenced from:

代表静态库中依赖的一些框架没有导入.如果静态库中用到了框架就必须导入

 

2.> "std::terminate()", referenced from:

但凡看到错误提示中提示两个冒号C++代码, 默认情况下Xcode创建的工程是不支持C++.

如何解决: 将工程中任意一个文件的后缀改为.MM即可

 

.c  C代码

.cpp C++代码

.m  C代码 + OC代码

.MM C代码 + OC代码 + C++代码

 

3.>Undefined symbols for architecture x86_64:

以后但凡看到这个错误, 一般是指用到的三方框架不支持64位手机

 

 

4.>注意:如果使用的Xcode6创建的工程, 想要成功的集成百度地图,还需要手动的添加一个Bundle display name

 

网易

>授权

>详情

新浪

 

判断网易是通过点击授权按钮跳转过来的,

还是通过点击详情按钮跳转过来的

 

 

SSO?

如果我们的手机上已经安装了需要分享的平台客户端, 会直接打开客户端要求用户授权, 而不需要用户输入账号密码

 

SSO?

如果我们的手机上已经安装了需要分享的平台客户端, 会直接打开客户端要求用户授权, 而不需要用户输入账号密码

 

 

 

 

如果控件有默认的内容(宽高), 我们只需设置autoalyoutX/Y, autolayout会自动计算出宽高

 

Xcode6Storyboard变成豆腐干的目的:

Xcode6之前, 如果要同时适配iPhoneiPad需要编写两个Storyboard

>Main_iPhone. Storyboard

>Main_iPad. Storyboard

能够在一个界面中同时配置iPhoneiPad

 

 

Xcode6dimages.xcassets可以和Storyboard一样, 可以指定图片在什么情况下显示

 

 

*代表Any 任意的

-代表压缩的

+正常的

 

 

ios8开始, 苹果为了拉拢其它语言的程序员, 推出一门全新的牛逼的语言, swift. 长相和其它各种语言都极其相似. swift和其它语言一样提出了一个叫做命名空间的概念, 所以苹果取消了类前缀的设置.

but, 如果老项目继续维护, 那么设置类前缀还是必须的, 也就是说如果继续使用OC编码, 类前缀还是必须的

 

 

Xcode6开始, 苹果取消了PCH文件, 也就是说不推荐我们使用PCH文件.

 

Xcode6为了提高用户的隐私安全, 将应用程(main bundle)和沙河的位置(doc cache ..)改变了

 

随着项目的业务逻辑越来越复杂

随着项目越来越大

那么我们Storybard中得控制器就越来越多, 就越来越难以维护

可以将复杂的事情简单化

拆分

 

 

点击消息界面的详情按钮模态弹出详情界面(红色)

点击详情界面的返回按钮就让详情界面消失

 

如果控件有默认的内容(宽高), 我们只需设置autoalyoutX/Y, autolayout会自动计算出宽高

 

Xcode6Storyboard变成豆腐干的目的:

Xcode6之前, 如果要同时适配iPhoneiPad需要编写两个Storyboard

>Main_iPhone. Storyboard

>Main_iPad. Storyboard

能够在一个界面中同时配置iPhoneiPad

 

 

Xcode6dimages.xcassets可以和Storyboard一样, 可以指定图片在什么情况下显示

 

 

*代表Any 任意的

-代表压缩的

+正常的

 

 

iOS8开始, 苹果为了拉拢其它语言的程序员, 推出一门全新的牛逼的语言, swift. 长相和其它各种语言都极其相似. swift和其它语言一样提出了一个叫做命名空间的概念, 所以苹果取消了类前缀的设置.

but, 如果老项目继续维护, 那么设置类前缀还是必须的, 也就是说如果继续使用OC编码, 类前缀还是必须的

 

 

Xcode6开始, 苹果取消了PCH文件, 也就是说不推荐我们使用PCH文件.

 

Xcode6为了提高用户的隐私安全, 将应用程(main bundle)和沙河的位置(doc cache ..)改变了

 

随着项目的业务逻辑越来越复杂

随着项目越来越大

那么我们Storybard中得控制器就越来越多, 就越来越难以维护

可以将复杂的事情简单化

拆分

 

 

点击消息界面的详情按钮模态弹出详情界面(红色)

点击详情界面的返回按钮就让详情界面消失

 

 

 

 

 

AVAudioPlayer  只能播放本地音乐

AVPlayer     远程音乐

 

 

 

 

 

 

 

 

 

以上是关于SVN(一次检出&二次检出)的主要内容,如果未能解决你的问题,请参考以下文章

用svn管理vc++项目的时候,都有哪些文件应该忽略

用svn管理vc++项目的时候,都有哪些文件应该忽略

svn检出时报错 急!!!

svn里面检出和导出区别是啥?

当svn检出项目检出一半时停止,如何继续检出

SVN入门 TortoiseSVN 检出