迁移到 Git.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
迁移到 Git 如果在其他版本控制系统中保存了某项⽬的代码⽽后决定转⽽使⽤ Git ,那么 项⽬ 必须经历某种形式的迁移。本节将介绍 Git 中包含的⼀些针对常见系统的导⼊脚本, 并将展⽰编写⾃定义的导⼊脚本的⽅法。 导⼊ 你将学习到如何从专业重量级的版本控制系统中导⼊数据—— Subversion 和 Perforce —— 因为据我所知这⼆者的⽤户是 (向 Git )转换的主要群体,⽽且 Git 为此⼆者附 带了⾼质量的转换⼯具。 Subversion 读过前⼀节有关 git svn 的内容以后,你应 能轻⽽易举的根据其中的指导来 git svn clone ⼀个仓库了;然后,停⽌ Subversion 的使⽤,向⼀个新 Git server 推送,并开始 使⽤它。想保留历史记录,所花的时间应 不过就是从 Subversion 服务器拉取数据的 时间 (可能要等上好⼀会就是了)。 然⽽,这样的导⼊并不完美;⽽且还要花那么多时间,不如⼲脆⼀次把它做对 !⾸当 其冲的任务是作者信息。在 Subversion ,每个提交者在都在主机上有⼀个⽤户名,记 录在提交信息中。上节例⼦中多处显⽰了 schacon ,⽐如 blame 的输出以及 git svn log 。如果想让这条信息更好的映射到 Git 作者数据⾥,则需要 从 Subversion ⽤户名到 Git 作者的⼀个映射关系。建⽴⼀个叫做 user .txt 的⽂件,⽤如下格式表⽰映射关系: schacon = Scott Chacon schacon@ selse = Someo Nelse selse@ 通过 命令可以获得 SVN 作者的列表: $ svn log ^/ --xml | grep -P ^author | sort -u | \ perl -pe s/author(.*?)\/author/$1 = / users.txt 它将输出 XML 格式的⽇志——你可以找到作者,建⽴⼀个单独的列表,然后从 XML 中抽取出需要的信息。 (显⽽易见,本⽅法要求主机上安装了grep ,sort 和 perl .)然 后把输出重定向到 user .txt ⽂件,然后就可以在每⼀项的后⾯添加相应的 Git ⽤户数 据。 为 git svn 提供 ⽂件可以然它更精确的映射作者数据。你还可以在 clone 或者 init后 ⾯添加 --no-meta ata 来阻⽌ git svn 包含那些 Subversion 的附加信息。这样 import 命 令就变成了: $ git svn clone /svn/ \ --authors-file=users.txt --no-metadata -s my_project 现在 my_project ⽬录下导⼊的 Subversion 应 ⽐原来整洁多了。原来的 commit 看上 去是这样: commit 37efa680e8473b615de980fa935944215428a35a Author: schacon schacon@4c93b258-373f-11de-be05-5f7 Date: Sun May 3 00:12:22 2009 +0000 fixed install - go to trunk git-svn-id: /svn/trunk@94 be05-5f7 现在是这样: commit 03a8785f44c8ea5cdb0e8834b7c8e6c469be2ff2 Author: Scott Chacon schacon@ Date: Sun May 3 00:12:22 2009 +0000 fixed install - go to trunk 不仅作者⼀项⼲净了不少,git-svn-id 也就此消失了。 你还需要⼀点 post-import (导⼊后) 清理⼯作。最起码的,应 清理⼀下 git svn 创建 的那些怪异的索引结构。⾸先要移动标签,把它们从奇怪的远程分⽀变成实际的标 签,然后把剩下的分⽀移动到本地。 要把标签变成合适的 Git 标签,运⾏ $ git for-each-ref refs/remotes/tags | cut -d / -f 4- | grep - v @ | while read tagname; do git ta

文档评论(0)

jiayou118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档