Tag: git

注释cacher les clefs d’API dans les应用程序Swift

实用程序«.plist»倒股票和其他方面的API.Contexte:Git,Github,Xcode,Swift 注释utiliter Github倾注了部分申请,没有livrer les clefs人员d’API? 消除无用票据,无用证据和使用限制。 即时报刊,收养收养人杂志: 1倒立清单咖啡机les clefs ex /«ApiKeys .plist» dans le projet Xcode 2 Ajouter ce fichier de clef dans la liste«.gitignore»des fichiersà忽略者 3 Ecrire une fon d’accèsaux clefs,dans un fichier swift。 前/«ApiKeys.swift» 4 Utiliser la fuction pourrécupérerles clefs 1Créerle fichier«Apikeys.plist»dans Xcode 2 Ajouter ce fichier de clef dans la liste«.gitignore»des fichiersà忽略者 […]

如何编写踢屁股拉请求

适量亵渎的Git入门指南 通过Akash Shah 对于新手开发人员(至少,那些想与其他人一起从事项目工作的人),编写提交和请求请求是必不可少的。 如果有效完成,它们最终将节省时间和精力,不仅对您有利,对您团队中的其他开发人员,项目经理和客户也是如此。 在进入美好的提交和拉取请求世界之前,退后一步来了解应用程序实际上是有帮助的 。 无需再费周折: 应用程序是功能的集合,这些功能可以共同帮助用户实现目标,无论是寻找新的住宿地点,与朋友联系还是浪费时间。 功能虽然差异很大,但具有一些特征: 每个功能都有一个单独的功能。 每个功能可以独立运行,也可以相互依赖。 每个功能都包括帮助其接收信息,解析信息然后进行传递的代码。 在大多数情况下,该代码仍然是单独的,其他功能无法访问。 文档作者,我们可以快点了吗? 我想做个很烂的狗屎! –你 嘘,年轻的Padewan。 我们到了那里。 现在,为什么我们要经历有关功能的整个讨论? 好吧,无论何时使用新功能或修复现有功能,都可以创建一个单独的分支,并将相关代码提交到该分支。 完成后,您将提交拉取请求 。 注意不要在一个分支中使用多个功能或修复。 提交 开发功能时,无需从一开始就构建其最终迭代。 您逐步构建它。 您可以从简单地激活功能开始,然后提供信息,依此类推,直到功能完成。 但是,您如何决定提交什么和何时提交? 这很简单。 提交步骤! 提交这些步骤可以使不熟悉您的代码的人轻松了解您的操作以及操作方式。 您可以做一些其他的事情来使您的提交变得更好: 说明 应该用一句话形容您的所作所为。 如果您需要更多,也许您应该拆分提交。 摘要应该描述提交的目标。 你想做什么? 将数据转换成字符串? 重构什么? 修复您之前弄糟的东西? (嘿,狗屎发生了。我没有判断!) 不要害怕经常犯错! 您做得越多,您就会学到更多。 确保您没有对Master做出任何承诺,除非您的项目负责人给予了此荣誉。 温馨提示:除非您喜欢使项目负责人的头部爆炸,否则请尽量不要使用空格。 哇,文档作者,您刚刚在使用gif时获得了一些严肃的信誉! –你 谢谢读者。 我努力 现在开始请求。 拉取请求 拉取请求用于准备好审查代码的情况。 如果一切正常,您的项目负责人会将其合并到Master Branch中 […]

TIL:重新定基

当我第一次开始基础调整时,我发现它令人恐惧。 我认为肯定需要进行重大更改,覆盖我为特定分支所做的所有工作,而成功做到这一点是不可能的。 但是,经过几次失败的尝试,我实际上可以说我在另一边还活着,现在,我喜欢变基!!! 因此,对于外行来说,这是您需要重新设置基准的方案: –您是从master分支开始的,但是其他人同时将他们的更改合并到master,因此您需要合并这些更改。 应用更改的最好方法是重新设置基准。 如果将rebase命名为其他名称,例如说“ update”或“ modernize”或“ get-wid-it”,我认为更多的人会发现rebasing很有趣。 首先,在尝试重新设置基准之前,可以通过备份所做的更改使自己省心。 您可以通过以下方式做到这一点: 创建一个临时分支,该分支将冻结您的分支更改,直到重新定基础 复制并保存您已更改的任何文件,或将整个项目本地保存在计算机上 因此,现在,世界就在您的牡蛎上,而您必须彻底出错,才能完全失去所有工作。 因此,这是有关如何重新设置基准的简短教程: 在分支机构的基础项目目录中,在终端中运行: git rebase master -i ←’i’表示交互式,它使您可以管理和修改提交历史记录。 您将在分支上看到提交列表,并且可以选择pick , squash , drop等等。它们中的每一个都是有用的,并且具有不同的用途,但是为了简单起见,在本教程中,我不再赘述。 您可以按原样离开并pick每个提交(或压缩除第一个提交以外的所有提交)。 如果没有合并冲突,您将看到以下消息: Successfully rebased and updated refs/heads/your-branch-name. 但是,您可能会有合并冲突。 同样, merge conflicts是一个令人恐惧的名称-如果将其称为“需要编辑”或“选择武器”或“购物”,它将更容易获得。 因此,这是纠正合并冲突的方法: git status ←这将向您显示哪些文件存在合并冲突 open file-name-that-has-merge-conflict ←然后,在IDE中打开每个文件,然后选择所需的代码(您将在HEAD上看到该版本,并在本地分支上看到该版本)。 git add file-name-that-had-merge-conflict ←添加/保存更改 git rebase –continue ←继续基础 您可能需要重复上述步骤几次(每次正在处理的提交中存在合并冲突时,一次)。 最后,您应该看到令人垂涎的消息: […]

内部来源

这有什么不同? 在Impala Studios,我们从拥有共享维护权的两个团队待办事项到通常由模块化和微服务件组成的包含我们所有产品的单个待办事项。 您会看到我们的产品由应用程序,框架,第三方模块和后端服务组成。 每个模块都可以设置为特定产品。 例如,Alarm Clock HD的iOS应用程序内部具有Alarm Clock Framework。 它使用多个SDK和3rd Party模块在应用程序营销和新闻中显示广告,收集数据,并使用我们自己的气象服务来获取新气象。 在我们当前的设置中,整个应用都有一个监护人和一个产品负责人,但是没有一个模块具有特定的所有权。 基本上每个人都拥有内部维护的代码,没有人拥有由外部各方维护的代码。 由于集成产品由其每个模块(不断更新)的最新版本组成,因此创建了相当复杂的依赖关系集。 随着模块的更新,诸如App之类的集成产品将会崩溃。 我们通常也不知道有没有损坏,因为应用程序中的大多数集成都不受自动化测试的影响。 当前,查看已经存在于存储库中一段时间​​的App是否仍然有效的唯一方法是制作和测试当前版本,然后修复发现的内容。 借助Innersourcing,Alarm Clock HD将拥有一个“所有者”(即产品所有者),但是监护权现在将进入每个模块。 现在,团队将负责团队中具有监护人的所有模块。 每个人仍然可以更改这些模块,但是拥有该模块监护权的团队拥有最终批准权。 监护团队确保它使用自己的模块(例如Cocoapods)的依赖处理程序来制作其模块的新版本,然后可用于新版本。 从例子中学习 Google — 20亿行代码 使用内部外包的单个产品的最大示例可能是Google的实现。 Google的所有25,000名工程师都可以在一个存储库中访问几乎所有20亿行代码! 我们可以从Google中学到的东西: 他们将代码保存在团队拥有的“目录”中。 除目录外,任何开发人员都可以进行任何更改,您的更改必须经过所有者的批准。 分支-它们具有“基于主干”或“发布分支”的模型。 尽可能晚地制作master分支的快照,并在此基础上开发新功能。 如果主服务器上已更新了开发所需的内容,则可以将其“放入樱桃”到发行分支中(由于其大小,他们甚至没有选择与主分支保持同步)。 发布分支是生产的基础。 我们可以考虑使用GitLab Flow,当然也可以考虑使用CocoaPods冻结版本。 它们具有每次提交时运行的单元测试的代码覆盖率。 他们使用拉取请求和自动部署进行代码检查。 贝宝(Paypal)-开源和内部源之间的优势 有许多公司一直活跃在开源社区中,而不是从专有或内部源码,甚至是开源方面发生变化的公司。 Google和Facebook在开放源代码许可下拥有部分代码,Apache基金会和Ubuntu / Canonical拥有完全基于社区的软件。 Paypal是后来者,但自2014年初以来,他们在kraken.js项目上开始从Java过渡到JavaScript和Node.js时,就采用了Inner Source。 他们注意到,要为许多项目做出贡献,就必须采用一种新的工作方式。 一个重要的变化是迁移到GitHub和使用Git。 另一个是就质量标准达成共识,例如单元测试。 最后,他们注意到开放源代码贡献者的工作是分散的,而他们正在迁移到同一地点的团队。 面对面交流的缺点是,对于不了解该软件的人而言,没有文档记录,他们必须学习使用readme.txt,changelog.txt并在git中进行文明的在线公开讨论注释。 由于kraken.js是开源的,因此与外部贡献者的通信在某种程度上迫使了这一点。 O’Reilly上提供了对Paypal内源的深入了解。 […]

如何在每个Git提交上运行SwiftLint自动更正

SwiftLint由好人@realm开发。 这是一个很棒的开源工具,用于在Swift中建立和执行正式的编码风格。 它在命令行上运行,但是也可以直接挂接到Xcode中。 它还具有“自动更正”功能,可扫过您的代码并自动修复最琐碎的违规行为(例如,冒号定位,双空格等)。 我创建了一个Git提交钩子,每次团队成员进行更改时,它都会执行此操作。 Shell脚本本身很简单。 只有提交中更改的文件将被自动更正。 为防止意外的文件更正,这些更改不会自动包含在当前更改集中。 您将有机会查看更正,并进行新的提交以完成这些更改,或修改先前的提交。 #!/bin/sh git diff –cached –name-only | grep .swift | while read filename; do /usr/local/bin/swiftlint autocorrect –path “$filename” done 将此Shell脚本安装在Git存储库的.git/hooks目录下。 确保将其命名为pre-commit (无文件扩展名)。 无论您使用哪种Git GUI工具,该提交钩子都应该可以正常工作,当然也可以使用命令行。 请注意,每个团队成员必须单独重复此安装。 没有办法自动分发git commit hooks。

在公司内部同步任务

我们的iOS分支模型 团队越大,当多个人在同一个代码库上工作时,发生问题的可能性就越大。 为了保证无障碍和协作的工作流程,仅知道您的git命令并不会削减它。 因此,有必要定义一个分支模型,以适应内部流程并限制从一群同步工作的人中出现的复杂性。 在Wolox,我们的目标是使开发人员更轻松地管理分支机构,同时在将构建发送给质量保证(QA)部门进行测试时,还节省了时间。 结果? 通过实施此模型,我们的产品质量得以提高,因为质量保证可以使用更完整的方法进行测试。 史诗(用户)故事 我们在iOS部门Wolox的分支模型基于Epics(即用户故事)的概念。 存在此类概念的几种不同定义,但是在Wolox,我们将它们定义为一组任务,这些任务具有完整的功能,可以为最终用户增加价值 。 史诗只有在其包含的所有任务完成后才有意义。 质量保证(QA) 与史诗打交道的主要优点之一是简化了开发人员和测试人员的质量检查流程。 在此模型中,一旦完成,我们就会向质量检查小组发送史诗。 这样,开发人员就不必为每个任务构建一个.ipa,从而节省了时间,并且质量检查团队可以测试其全部功能及其组件之间的交互。 这简化了两端的过程,并使测试人员的工作更有效,从而提高了产品的整体质量 。 我们的分行 主 在我们的master分支中,我们找到了最新版本。 该分支应始终包含工作和可交付的代码。 开发人员 开发分支从母版分支出来。 在这里,我们可以找到质量检查已批准的史诗。 在Wolox,我们使用Scrum,因此在每个sprint结束之后,在检查了此处合并的不同史诗是否相互兼容之后,我们将此分支合并到master。 根据您的方法或项目的具体情况,一旦向客户显示进度(内部或外部),您也可以合并以掌握。 请记住,master必须始终包含正确运行的代码,因此在合并时请谨记。 史诗-{史诗名称} 每个史诗分支都包含已被代码审查且提交请求已被批准的提交。 史诗般的所有任务通过我们的代码审查流程后,便会生成.ipa并将其发送给质量检查人员。 记住要先从开发者那里重新定位! *避免合并错误的一个好技巧是拥有受保护的分支。 {epic name}-{feature name} 每个功能都从其对应的史诗分支中分支出来。 在这里,开发人员进行必要的提交以实现任务或功能。 完成后,开发人员将史诗分支作为目标分支,从而打开一个新的请求代码审查请求。 让我们玩这个… 想象一个已经有几个发行版的项目,其中的master和dev是最新的。 在下一个冲刺计划中,我们决定开发三个新功能: 查看重新设计 新视图(视图B) 实施推送通知 因此,我们将根据dev创建3个新分支: 史诗般的屏幕重新设计 史诗般的画面B 史诗般的推送通知 我们必须为每个史诗选择一个所有者,然后由他负责在存储库中创建新分支,以便团队中的每个成员都拥有相同的分支。 此人还将在必要时创建测试计划,并在史诗完成后构建.ipa并将其发送给QA测试人员。 尽管该史诗具有所有者,但这并不排除其他开发人员在功能分支中从事史诗的工作。 同样,在sprint计划中,我们可以为每个史诗定义任务,或将任务留给每个开发人员或一组开发人员。 这些将是我们的epic-screen-B分支的四个功能: screen-B-设计,我们在其中实现视图和前端 […]

创建自己的CocoaPod库

CocoaPods是本机iOS / macOS项目的依赖项管理器。 它具有成千上万个库,可以通过共享而不是共享项目的整个库集,而仅共享包含有关依赖项的所有信息的单个Pod文件,来帮助您优雅地扩展项目。 最终,其目标是通过创建一个更加集中的生态系统来提高第三方开源库的可发现性和参与度。 不仅如此,您还可以在私有存储库中创建pod,因此没有人可以访问它,并且您将获得CocoaPods的所有好处。 首先,让我们看一下cocoapods到底是什么 : 在这里,您可以看到cocoapods将所有依赖项存储在其他位置(例如GitHub上的代码,gitlab等),以及关于cocoapods仓库的pod信息。 因此,对于创建Pod,您应该将代码存储在某个仓库(公共或私有,您可以选择)上,并将Pod信息提供给cocoapods。 Pod信息实际上是一个.podspec文件,其中包含有关库的所有信息(请参见下文)。 因此,podspec基本上如下所示: Pod :: Spec.new do | s | s.name =’MyLibrary’ s.version =’0.1.0′ s.summary =’真棒’ s.description = <<-DESC 帮助您飞行。 数据中心 s.homepage =’http://example.com’ s.screenshots =’www.example.com/screenshots_1′ s.license = {:type =>’MIT’,:file =>’LICENSE’} s.author = {‘Maxud’=>’nuves101@gmail.com’} s.source = {:git =>’http://github.com’,:tag => s.version.to_s} s.social_media_url =’https://twitter.com/ ‘ s.ios.deployment_target =’7.0′ s.platform =:ios,’7.0’ […]

创建项目结构–我的第一个Swift App

如果您想查看本系列的上一部分,请点击以下链接: 我的第一个Swift App 简介 medium.com 是的,做了介绍。 让我们开始吧! 我将从在Xcode上创建一个单一视图应用程序开始。 文件>新建>项目 选定的单视图应用程序 选择Swift作为主要语言 就是这样,项目已创建。 现在,我将创建一个git存储库。 https://github.com/ 创建一个新的仓库 使用项目目录上的终端: git初始化 git commit -m“第一次提交” git remote add origin git@github.com:用户名/repo.git git push -u原始主机 至此,我创建了一个.gitignore并在上面添加了一些临时文件,例如xcuserdata和.DS_Store。 忽略文件–用户文档 有时,有些文件不希望Git签入GitHub。 有几种方法可以告诉Git哪个… help.github.com 现在,让我们开始cocoapods。 荚初始化 在项目上启动cocoapods之后,是时候在podfile上添加第一个pod了。 使用以下命令安装pod: 吊舱安装 现在,我创建了一个开发分支以开始工作。 git checkout -b开发 如果您在处理git分支时遇到问题,这是一个很好的入门指南,这是组织它的好方法。 引入GitFlow GitFlow是由Vincent Driessen创建的Git分支模型。 它吸引了很多关注,因为它是… datasift.github.io 而已! 已创建项目,已安装所有内容,准备开始编码! 🙂 在下一篇文章中,我将创建服务管理器文件并使用SPTrans API对应用进行身份验证。 非常感谢!

作法:建立.gitignore档案

.gitignore告诉git它应该忽略哪些文件(或模式)。 通常用于避免从工作目录中提交对其他协作者无用的临时文件,例如编译产品,IDE创建的临时文件等。 要创建您的.gitignore文件,您可以访问以下网站:www.gitignore.io。 Gitignore.io将生成一个网页,稍后您将需要该URL。 生成文件后,请按照以下步骤在git上对其进行配置。 打开终端并找到您项目的.git: 2.使用wget -O .gitignore’generatedURL’创建.gitignore文件。 如果尚未安装wget,请通过自制软件安装。 现在,您的.gitignore文件已配置并准备提交。

解决iOS GIT问题

Quienes manejamos GIT,在线阅读和阅读“ enfrentado”,即解决冲突。 Pensémoslo,nuestro proyecto no puede ejecutarse por ellos,veces resultandifícilesde entender,involucra coordinarse con el resto de los desarrolladores para saberquécambios deben conservarse ycaálesno…etc。 Es por ello,que enéste指导我gustaríahablar acerca de lo que儿子,iOS系统的可识别性和解决方案,以及ejemplo的翻译。 AJMSlideAnimator Supongamos estamos trabajando en el proyecto AJMSlideAnimator,un proyecto disponible en Github和los cuales存在2个desarrolladores:CTime95(中央存储库)和TheKairuz(中央存储库)。 故事板中的Ambos desarrolladores se encuentran上的子句AJMSlideAnimatorView和se encuentran ajustando constantemente。 Ajustes TheKairuz […]