相关疑难解决方法(0)

如何在不丢失历史记录的情况下将大型Perforce存储库导出到不同的版本控制系统?

在工作中,我们有一个庞大的Perforce存储库(大约40k更改列表,总存储大小~145GB).我们对Perforce只有一些温和的抱怨感到满意,但我们计划采用更加分散的开发模式,因此,我们也希望转向更加分散的版本控制系统.

到目前为止,我已经看过通常的嫌疑人(git,mercurial和潜在的集市,因为我对它有很好的经验),但我们目前的主要障碍是从Perforce获取版本历史并导入各种DVCS,所以我们不要失去了历史.如果我们不一定要保留它,我们也不希望Perforce服务器徘徊 - 我这种迁移的经验是,一段时间后没有人看过旧的回购,所以你会失去历史那样.

由于有多个项目资源库中的想法是,当我们出口的历史,不是每个人都需要能够看到历史的每一个零件,将它拆分成多个DVCS项目.然而,我们最大的项目仍然包含大约2/3的承诺修订版,并且还占用了大约2/3的存储空间.它拥有最多的分支机构 - 大约30个.

到目前为止,我已经尝试了以下内容 - 一切都在Windows上,因为我们只是一个Windows专卖店:

  • 使用hg convert扩展名导入Mercurial .这似乎对我正在转换的项目的主要分支非常有效,但是尝试使用分支图将Perforce分支转换为命名的Mercurial分支仍然会在默认分支上的每个签入时生成平面导入.也许那是因为我设置了分支映射错误,但hg help convert建议你只能将Perforce repo变成一个"扁平"结构而没有使用这个导入器的分支,这对我们的使用来说还不够好.
  • 使用git-p4.py导入Git.Perforce文档使用git作为Perforce的分布式前端,并且基于repo的最新版本的关闭确实产生了一个可用的git repo.尝试使用分支导入整个子项目会导致导入器耗尽内存,所以我甚至无法判断它是否设法正确导入我们的仓库.
  • 然后我有了这个辉煌的大脑放屁,将Perforce repo导入SVN,所有分支都映射到适当的SVN分支,因为太阳下的每个版本控制系统都可以从SVN导入.这只是使用SVN作为转换的中间步骤,而不是目标VCS - 否则我们不会从这个转换中获得任何东西.使用p42svn.pl,这个过程很早就破坏了,因为我们的Perforce服务器似乎不喜欢被似乎为每个文件/修订版建立新连接的脚本所打击.
  • 我还没有考虑将历史输出到Bazaar,因为它有点像跑步.

所以,我的问题是:

  • 除了p42svn.pl之外还有一个很好的工具可以将Perforce repo导出到SVN吗?我不介意使用SVN作为中间回购,因为它似乎导致导出到我们看起来相当容易的所有DVCS.
  • 有没有人成功地将Perforce的分支机构导出到Mercurial的分支机构中,如果是这样,你是怎么做到的?关于转换扩展的文档似乎有点稀疏,我似乎无法找到一个好的/工作方式来做到这一点.

svn git mercurial perforce

7
推荐指数
1
解决办法
5095
查看次数

删除在 Github 上使用 <user> 提交的 <user>

我在 github 上有许多提交,如下所示:

在此处输入图片说明

有没有一种重新定位的方法,以便我可以摆脱这种情况,而只需将提交标记为我?

git rebase

5
推荐指数
1
解决办法
3500
查看次数

从 github 存储库主页删除贡献者

在 repo 的主页上,我们有 2 位贡献者。

在此输入图像描述

我删除了底部用户的所有提交(一:))。在 /graphs/contributors 页面上,我们可以看到 2 位贡献者。如何从 git repo 的主页中删除一个?

git github

5
推荐指数
1
解决办法
3482
查看次数

如何在github上设置匿名电子邮件地址?

我在提交时遇到错误:

您的推送将发布一个私人电子邮件地址。

我在这里看到它建议设置匿名电子邮件地址。

您的推送将发布私人电子邮件地址错误

但我阅读了文档,它只是显示添加到 https://github.com/settings/emails

这需要验证。但我只是设置了一些随机电子邮件noreply@yahoo.com,但我没有。但文档说要验证它。我不明白这一点。或者我是否需要为此创建一些真实的电子邮件或使用一些临时电子邮件服务以便我可以验证?

我什至不明白为什么 git push 开始需要一些电子邮件。前几天我在push commits的时候并没有出现这样的错误。

更新

好吧,这可能是因为我分叉了一个存储库并进行了提交。我第一次在 forket 存储库上进行了提交。我看不到我的电子邮件在该提交中实际可见的位置。

git email github

4
推荐指数
1
解决办法
7639
查看次数

如何在git分支上更改作者姓名

前几天,我分支了github项目以创建静态页面,但搞砸了我的作者姓名

https://github.com/ronaldsuwandi/le-simplepage/commits/gh-pages

如何为分支的第一次提交重命名作者?

我试过了

但是没有运气-我对git还是很陌生。

编辑:如果我想更改第一个提交(例如,如果我的提交历史记录是并且我想更改我可以执行的提交历史记录,那么Amber给出的答案将无效)。想更改自身的提交历史。A-B-C-DBgit rebase -i AA

git git-amend branching-and-merging

2
推荐指数
1
解决办法
4594
查看次数

在提交linux时git使用root代替我的用户名

我有一台运行Git的Linux机器。我检查了一个仓库,并从linux commnad行进行提交。当我执行推和拉操作时,它会问我我的用户名和密码,然后显示成功。

但是,在日志中,它显示由root提交。我检查了git config,但找不到任何东西。

这是我的配置文件的值:

core.repositoryformatversion=0 
core.filemode=false
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=https://github.com/my-username/RepositoryName.git
branch.stage.remote=origin
branch.stage.merge=refs/heads/stage
Run Code Online (Sandbox Code Playgroud)

linux git github

2
推荐指数
1
解决办法
2775
查看次数

如何使用其他用户凭据撤消对GitHub的意外推送

我正在使用我的github存储库和客户端git存储库.今天,我对我的git代码进行了修改,并意外地使用客户端凭据进行了修改.提交后,我意识到我使用客户端用户名和电子邮件提交了代码,然后我设置git config --global user.name "myname"并将git config --global user.email "ex@gmail.com"代码推送到我的仓库.代码推送成功.但我的问题是,我可以看到提交是由客户端凭据提出的.并且他的名字也加入了贡献者名单.你可以在下面看到 你可以在这里看到:我怎样才能将他从我的贡献者中删除,我想完全撤消推送.提前致谢.

2
推荐指数
1
解决办法
923
查看次数

如何在 Git 中更改作者姓名

我已更改 GitHub 中的用户名。我对 Git 进行了一些提交,并输入命令 >git log 来查看我的提交。在作者部分,它仍然显示我以前的用户名。如何更改/更新 Git 上当前的用户名?提交后,它也应该反映在作者部分。

> git log
commit commitId (HEAD -> master)
Author: **My previous username** <My email id>
Date:   Sun Feb 14 16:39:26 2021 +0530
Run Code Online (Sandbox Code Playgroud)

git

2
推荐指数
1
解决办法
2337
查看次数