汇率制度没有万能样板
111
2024-11-13
这篇文章给大家聊聊关于bitbucket如何创建仓库,以及bitbucket搭建对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
本文目录
团队项目的Git分支如何管理?如何创建私有 CocoaPods 仓库Git 2:创建仓库(bitbucket)bitbucket单仓库容量如何在eclipse中使用bitbucket远程仓库团队项目的Git分支如何管理?Git是目前最流行的源代码管理工具。大量的软件项目由GitHub、Bitbucket和GitLab这样的云服务平台或是私有的Git仓库来管理。在使用Git时通常会遇到的一个问题是采用何种分支管理实践,即如何管理仓库中作用不同的各类分支。和软件开发中的其他实践一样,Git分支管理并没有普遍适用的最佳做法,而只有对每个团队和项目而言最适合的做法。简单来说,在项目开发中使用多个分支会带来额外的管理和维护开销,但是多个分支对于项目的团队合作、新功能开发和发布管理都是有一定好处的。不同的团队可以根据团队人员组成和意愿、项目的发布周期等因素选择最适合的策略,找到最适合团队的管理方式。这里讲一下三种常见的Git分支管理方式。
单主干
单主干的分支实践(Trunk-baseddevelopment,TBD)在SVN中比较流行。Google和Facebook都使用这种方式。trunk是SVN中主干分支的名称,对应到Git中则是master分支。TBD的特点是所有团队成员都在单个主干分支上进行开发。当需要发布时,先考虑使用标签(tag),即tag某个commit来作为发布的版本。如果仅靠tag不能满足要求,则从主干分支创建发布分支。bug修复在主干分支中进行,再cherry-pick到发布分支。图1是TBD中分支流程的示意图。
图1.TBD中的分支流程的示意图
由于所有开发人员都在同一个分支上工作,团队需要合理的分工和充分的沟通来保证不同开发人员的代码尽可能少的发生冲突。持续集成和自动化测试是必
要的,用来及时发现主干分支中的bug。因为主干分支是所有开发人员公用的,一个开发人员引入的bug可能对其他很多人造成影响。不过好处是由于分支所带来的额外开销非常小。开发人员不需要频繁在不同的分支之间切换。GitHubflow
GitHubflow是GitHub所使用的一种简单的流程。该流程只使用两类分支,并依托于GitHub的pullrequest功能。在GitHubflow中,master分支中包含稳定的代码。该分支已经或即将被部署到生产环境。master分支的作用是提供一个稳定可靠的代码基础。任何开发人员都不允许把未测试或未审查的代码直接提交到master分支。
对代码的任何修改,包括bug修复、hotfix、新功能开发等都在单独的分支中进行。不管是一行代码的小改动,还是需要几个星期开发的新功能,都采用同样的方式来管理。当需要进行修改时,从master分支创建一个新的分支。新分支的名称应该简单清晰地描述该分支的作用。所有相关的代码修改都在新分支中进行。开发人员可以自由地提交代码和push到远程仓库。
当新分支中的代码全部完成之后,通过GitHub提交一个新的pullrequest。团队中的其他人员会对代码进行审查,提出相关的修改意见。由持续集成服务器(如Jenkins)对新分支进行自动化测试。当代码通过自动化测试和代码审查之后,该分支的代码被合并到master分支。再从master分支部署到生产环境。图2是GitHubflow分支流程的示意图。
图2.Githubflow中的分支流程的示意图
GitHubflow的好处在于非常简单实用。开发人员需要注意的事项非常少,很容易形成习惯。当需要进行任何修改时,总是从master分支创建新分支。完成之后通过pullrequest和相关的代码审查来合并回master分支。GitHubflow要求项目有完善的自动化测试、持续集成和部署等相关的基础设施。每个新分支都需要测试和部署,如果这些不能自动化进行,会增加开发人员的工作量,导致无法有效地实施该流程。这种分支实践也要求团队有代码审查的相应流程。
git-flow
git-flow应该是目前流传最广的Git分支管理实践。git-flow围绕的核心概念是版本发布(release)。因此git-flow适用于有较长版本发布周期的项目。虽然目前推崇的做法是持续集成和随时发布。有的项目甚至可以一天发布很多次。随时发布对于SaaS服务类的项目来说是很适合的。不过仍然有很大数量的项目的发布周期是几个星期甚至几个月。较长的发布周期可能是由于非技术相关的因素造成的,比如人员限制、管理层决策和市场营销策略等。
git-flow流程中包含5类分支,分别是master、develop、新功能分支(feature)、发布分支(release)和hotfix。这些分支的作用和生命周期各不相同。master分支中包含的是可以部署到生产环境中的代码,这一点和GitHubflow是相同的。develop分支中包含的是下个版本需要发布的内容。从某种意义上来说,develop是一个进行代码集成的分支。当develop分支集成了足够的新功能和bug修复代码之后,通过一个发布流程来完成新版本的发布。发布完成之后,develop分支的代码会被合并到master分支中。
其余三类分支的描述如表1所示。这三类分支只在需要时从develop或master分支创建。在完成之后合并到develop或master分支。合并完成之后该分支被删除。这几类分支的名称应该遵循一定的命名规范,以方便开发人员识别。
表1.git-flow分支类型
对于开发过程中的不同任务,需要在对应的分支上进行工作并正确地进行合并。每个任务开始前需要按照指定的步骤完成分支的创建。例如当需要开发一个新的功能时,基本的流程如下:
从develop分支创建一个新的feature分支,如feature/my-awesome-feature。在该feature分支上进行开发,提交代码,push到远端仓库。当代码完成之后,合并到develop分支并删除当前feature分支。在进行版本发布和hotfix时也有类似的流程。当需要发布新版本时,采用的是如下的流程:
从develop分支创建一个新的release分支,如release/1.4。把release分支部署到持续集成服务器上进行测试。测试包括自动化集成测试和手动的用户接受测试。对于测试中发现的问题,直接在release分支上提交修改。完成修改之后再次部署和测试。当release分支中的代码通过测试之后,把release分支合并到develop和master分支,并在master分支上添加相应的tag。因为git-flow相关的流程比较繁琐和难以记忆,在实践中一般使用辅助脚本来完成相关的工作。比如同样的开发新功
能的任务,可以使用gitflowfeaturestartmy-awesome-feature来完成新分支的创建,使用gitflowfeaturefinishmy-awesome-feature来结束feature分支。辅助脚本会完成正确的分支创建、切换和合并等工作。如何创建私有 CocoaPods 仓库一、概述
CocoaPods是iOS,Mac下优秀的第三方包管理工具,类似于java的maven,给我们项目管理带来了极大的方便。个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像开源库一样在CocoaPods中管理它们,那么通过私有仓库来管理就很必要。对于CocoaPods还不太熟悉的,建议参考一下唐巧的博客或者直接到CocoaPods的官网看看:https://cocoapods.org/
二、概念
大家很容易把specrepository和coderepository弄混,我一开始就在这里挂起了好久。
1.coderepository是代码仓库,我们把包代码上传到这个仓库。
2.specrepository是配置仓库,所有的配置按照包名、版本号分门别类的存放在这个仓库。这个仓库只用来存放spec文件,
不存放代码。小结:以AFNetWorking为例,如果只创建AFNetWorking的coderepository,而不将coderepository中的.Podspec文件上传到specrepository的话,你在自己的工程引入AFN的时候压根用不了。
三、步骤
创建私有的CocoaPods仓库之前需要先制作CocoaPods依赖库,所以步骤分两步:
1.制作CocoaPods依赖库,也就是代码库。
2.创建私有CocoaPods仓库。
小结:1.制作依赖库也就是在自己的服务器或者github等远端第三方服务器创建一个仓库,用来保存.podspec、LICENSE、README.md以及代码文件和一些资源文件。
2.创建私有CocoaPods仓库也就是在自己的服务器或者github等远端第三方服务器创建一个仓库,用来接受并存放.podspec文件,来管理自己的私库。
四、制作CocoaPods依赖库
当我们使用了类似于AFNetWorking这样的Pods依赖库以后,你一定对创建自己的依赖库很有兴趣吧,现在我们就来尝试一下,以一个简单caculatorMaker为例自己创建一个Pods依赖库。
1.创建并设置一个私有的codeRepository。
因为GitHub的私有仓库是收费的,我还不是GitHub的付费用户,所以我使用了其他Git服务,我使用的是gitlab(我们公司是基于内网的,当然你也可以基于外网),当然还有其他的可供选择开源中国、CODING、Bitbucket以及CSDNCode.
2.clone仓库到本地
为了方便向仓库中删减内容,需要将仓库clone到本地,这里有多种操作方式,可以选择你喜欢的一种,但是为了方便这边选择使用命令行。首先需要切换到你想在本地存储的目录,然后再clone,假设你放在用户的根目录上:
cd~
gitclonehttp://njGitrepo/xxx/caculatemaker.git
完成后,我们进入到~/caculatemaker目录,这时候你看到是一个空文件夹,这由于我用的是gitlab创建的,没有像github网页那样在创建codeRepository的时候可以勾选创建LICENSE和README.md文件。其实也不是什么都没有,实际上是有一个隐藏的.git文件,后续我们的所有文件都在这个目录下进行。
注意:打开隐藏目录,可以使用命令,接着需要重启一下Finder,可以按住option+右键Finder图标选择重启。
//打开隐藏的命令:
defaultswritecom.apple.finderAppleShowAllFiles-booltrue
//关闭隐藏的命令:
defaultswritecom.apple.finderAppleShowAllFiles-boolfalse
3.向本地仓库中添加创建Pods依赖库所需的文件
这个代码库需要手动在外面创建好.podspec、LICENSE、README.md以及代码文件和一些资源文件并拖动到,当然你在其他的git服务上需要创建的基本都是这几种文件。
1).每个Pods依赖库必须有且仅有一个名称和依赖库名保持一致,后缀名为.podspec的描述文件。这里我们依赖库的描述文件名称应该为caculatormaker.podspec。
2).创建这个.podspec的描述文件有两种途径:
a.复制已有的podspec文件然后修改对应的参数。
b.执行命令行创建。
我们使用命令行:
podspeccreatecaculatormaker
我们发现这个是ruby文件,里面有很多东西是我们不需要的,我们可以用文本编辑器打开并删除我们不需要的内容。
Pod::Spec.newdo|s
s.name='caculatemaker'
s.version='0.1.0'
s.summary='justtest's.description=<<-DESC
TestingPrivatePodspec.
DESC
s.homepage='http://njgitrepo/wushuanghong/caculatemaker'
#s.screenshots='www.example.com/screenshots_1','www.example.com/screenshots_2'
s.license={:type=>'MIT',:file=>'LICENSE'}
s.author={'shuanghong.wu'=>'shuanghong.wu@qq.com'}
s.source={:git=>'http://njGitrepo/wushuanghong/caculatemaker.git',:tag=>s.version}
s.ios.deployment_target='8.0'
s.source_files="Classes","Classes/**/*.{h,m}","caculator/**/*.{h,m}"
end
3).README.md
使用github的人应该都熟悉这个文件,它使一个成功的github仓库必不可少的一部分,使用markdown对仓库进行详细说明。
4).LICENSE文件
CocoaPods强制要求所有的Pods依赖库都必须有license文件,否则验证不会通过。license文件有很多中,详情可以参考tldrlegal。前面我们已经选择创建了一个MIT类型的license。
4.提交修改到codeRepository
经过前面步骤,我们已将在本地的git仓库添加了不少文件,现在我们只要将他们提交到gitlab上就可以。在此之前我们需要对刚才添加的pod进行一下验证:
podliblint
如果你刚才没有给caculatormaker.podspec的s.source指定tag,就有可能有warn警告,执行下面的命令:
podliblint--allow-warnings
验证成功之后,我们只要把代码提交到gitlab仓库,就可以了,参考命令:
gitadd-A&&gitcommit-m"addpodfiles"
gitpushoriginmaster
如果以上的操作都没有问题的话,gitlab上应该可以看到类似下面的内容:
到现在为止,我们的CocoaPods依赖库就已经准备好了,但是现在你还不能在你的工程中使用它。如果你想成为一个真正可用的依赖库,还需要最后一步操作:将刚才生产的podspec文件提交到自己创建的私有SpecRepository上,那么继续下面的第五步。
五、创建私有CocoaPods仓库
1.创建并设置一个私有的SpecRepository。
跟第四步中的创建codeRepository一样,我们创建SpecRepository也是基于gitlab的,当让你也可以用其他上面我提到的方式。
如图所示,我们在github上创建一个空的仓库,命名为wshSpecs,这个仓库是用来存放我们自己所有的私有库的spec文件,就如同官方的https://github.com/CocoaPods/Specs是用来存放所有官方的specs文件一样。
终端执行命令:
podrepoaddwshSpecshttp://njGitrepo/wushuanghong/wshSpecs.git
注意:上面的命令的解释如下:
podrepoaddREPO_NAMESOURCE_URL
其中的REPO_NAME是我们要添加的私有repo的名称(这里我们待会填的是:wshSpecs),后面是仓库的gitlab地址。这里做的其实是创建的工作,也就是在~/.cocoapods/repo目录下添加了一个以你的私有repo为名的文件夹,但是并没有添加spec文件。
这里用的是https地址,当然你也可以用git地址,不过这样有可能失败。如果失败,很大因素是你github的ssh在本地没有配置好,配置方法可以看这里:GeneratingSSHkeys,成功后可以看得到.cocoapods目录如下图所示:
至此,我们已经在本地得到我们自己的私有仓库wshSpecs,这是一个空的仓库。
注意:这里我需要介绍一下上面的master文件夹里面到底是什么东西:
a.进入到这个目录
在Finger前往文件夹中输入~/.cocoapods,显示的内容就是上图的界面。
b.点开master文件夹下面的spec目录,其下存放的就是所有提交到CocoaPods的开源库的podspec文件的集合。
其结构如下图所示:
其组成方式:
specName--version--specName.podspec
(master里现在是specName.podspec.json,这个.json文件就是podspec文件加了个后缀。我们可以采用podipcspec这个命令来将spec文件转换成.json)
那这个文件夹是如何来得呢?其实,这个文件夹是在你安装了CocoaPods后,第一次执行podinstall时,CocoaPods通过命令podsetup来建立的(这条命令会自动执行)。
2.添加刚才第四步创建的caculatormaker.podspec到你的SpecRepository。
在前面验证通过的基础上,我们接着执行命令:
podrepopushwshSpecscaculatormaker.podspec
按照平时使用CocoaPods的习惯,我们添加依赖库之前会先搜索一下库,让我们执行一下命令:
podsearchcaculatormaker
3.在个人项目中的Podfile中增加刚刚制作的好的Pod并使用。
让我们建立一个普通的工程,命名为TestPodDemo,然后在终端cd到其目录路径下,添加一个Podfile文件:
podinit
建立后修改Podfile文件内容如下:
source'https://github.com/CocoaPods/Specs.git'#官方仓库地址
source‘http://njGitrepo/wushuanghong/wshSpecs.git’#私有仓库地址
use_frameworks!
target'TestPodDemo'do
pod‘caculatemaker’
end
执行:
podinstall
这样一来我们就可以使用这个私有库了!
4.更新维护podspec。
当我们的代码变动时,首先需要更新codeRepository中的.podspec文件的版本,然后push到SpecRepository。
Git 2:创建仓库(bitbucket)Togetstartedyouwillneedtorunthesecommandsinyourterminal.
若是使用了--global选项,那么更改的配置文件就是位于你用户主目录下的,以后所有的项目都会慕容使用该配置的用户信息
若要在特定项目中使用其他name/email,只要去掉--global选项重新配置即可,新的设定保存在当前项目的.git/config文件里
若出现相同的变量名,则来自不同的配置文件(/etc/gitconfig和~/.gitconfig)
Ifyoualreadyhavecodereadytobepushedtothisrepositorythenrunthisinyourterminal.
示例:
IfyourcodeisalreadytrackedbyGitthensetthisrepositoryasyour"origin"topushto.
Ifyouwanttosimplyclonethisemptyrepositorythenrunthiscommandinyourterminal.
示例:把bitbucket生成的git仓库克隆到本地
bitbucket单仓库容量1GB。Bitbucket是没有文件大小限制,空间免费的套餐容量是1GB,支持5个用户协作。BitBucket是采用Mercurial和Git作为分布式版本控制系统,同时提供免费账户和商业计划,现在主要面向慈善企业和企业用户/其主要市场是大型企业。
如何在eclipse中使用bitbucket远程仓库一、将本地库分别与bitbucket、github远程库绑定
1.首先你要在bitbucket、github创建库,假设这个库叫做:LBS
2.记得要在bitbucket、github中设置sshkey。建议:设置同一个sshkey就可以了;
3.进入你本地库目录,输入下列命令:
gitremoteaddbit_lbsssh://git@bitbucket.org/您的用户名/lbs.git
gitremoteaddgithub_lbsssh://git@github.com/您的用户名/lbs.git
上面两条指令是将你的本地库分别与远程版本库绑定。
4.查看本地创建的远程版本库别名,可输入下列命令:
gitremote
gitremoteshow<name>
5.删除本地创建的远程版本库别名,可输入下列命令:
gitremoterm<name>
OK,本文到此结束,希望对大家有所帮助。