我最近厌倦了TFS.我听说隧道尽头有一盏灯.显然,我可以使用的git-TF或混帐TFS和对待我的代码,就好像它是由git的管理,但可以从一个中央服务器TFS推/拉/.
我的主要问题是我不确定应该使用哪一种.微软正式支持git-tf,git-tfs已经存在了很长时间.这些之间有什么区别,我应该先尝试哪些?
我正在尝试在我的Windows工作站上设置git-tf桥.当我尝试执行其中一个命令时,它总是显示消息:
无法找到所需的JAR:C:\ my\path\to\git-tf/lib/com.microsoft.gittf.client.clc-*jar不存在.
问题是从\的路径中间的斜线更改更改为/.
提前致谢.
上下文
用于开发的GitHub Enterprise安装.每个开发人员都有自己的公共回购,组织拥有authorative repo.Pull请求用于代码审查,我们松散地遵循nvie的git flow分支模型.
用于问题跟踪和部署的TFS安装(发布分支).我们将发布分支镜像到TFS仓库.
工作项目
现在困难的部分是:我们如何将git提交(最初可能在开发人员的公共分支上完成)与TF工作项相关联?
我做了什么
我看了下面的项目寻求帮助:
我已经阅读了在两个Git-TF项目中将提交与工作项相关联的参考文献,但我不确定使用什么工具,以及如何准确地解决它.
如果我必须在发布分支上运行脚本提交从提交消息中提取工作项引用并将它们与发送到TFS的变更集相关联,我会没事的.但是,优选允许元数据(而不是提交消息)中的关联的解决方案.
我有什么选择将TFS中的工作项与git提交相关联?
我怎么能告诉Git真的不关心行结尾?将它们保留为原来的LF或CRLF,并以同样的方式检查它们?
我正在使用带git-tf的Git存储库来检入TFS存储库.我团队的其他成员只使用TFS.
在这种情况下,有时他们会在不知情的情况下改变行结尾.例如,最近第三方工具将其行结尾标准化,以及其他变化.我们的repo已更新这些更改,现在由于不同的行结尾,文件显示在我的目录中有更改.
对于这个特定的存储库,我真正想要的是让Git假装行结束更改不存在.如果是LF,请将其保留为LF.如果是CRLF,请将其保留为CRLF.
为了做到这一点,我需要什么设置或设置组合?
我的问题正是标题.
每次我git-tf checkin
在命令提示符下运行命令时,它连接到TFS时都会询问我的用户名和密码.我怎么能避免这个?要么让它与当前用户一起登录,要么将凭证存储在配置文件中的某个位置.
使用sidekiq gem - 我有sidekiq worker使用IO.popen运行一个进程(大型存储库的git-tf克隆)并跟踪stdout以检查克隆的进度.
当我运行worker时,我发现sidekiq内存越来越大,直到我得到内核OOM并且进程被杀死.子进程(java进程)只占总内存的5%.
我如何调试/检查我的代码中的内存泄漏?并且sidekiq内存是我的工人记忆与popen过程的总和?
有没有人知道如何解决它?
编辑
这是我的工作人员的代码 -
https://gist.github.com/yosy/5227250
编辑2
我没有sidekiq运行代码,我没有内存泄漏..这与tfs中的sidekiq和大型存储库有点奇怪
我想将 TFS 存储库导入 git 并克隆到我的本地机器,我正在使用 git-tf。在我的代码下面:- git-tf clone http://server:8080/tfs/DefaultCollection $/SampleProject D:\TFSRepoName 我想在 url 中传递用户名和密码,所以它自动克隆 repo 而不要求用户名和密码。
我将TFS
repo 克隆到我的本地Git
,然后尝试将TFS
远程更改为另一个存储库,以使用以下命令将所有更改集传输到它:
git tf --force configure http://tfs2012:8080/tfs/DefaultCollection $/ProjectName
git tf checkin
Run Code Online (Sandbox Code Playgroud)
得到以下错误:
git-tf: TF14019: The changeset 31129 does not exist
Run Code Online (Sandbox Code Playgroud)
怎么了?
PS:旧存储库有一个版本2010,新版本是2012.新存储库是空的
我是我公司的TFS2012服务器的管理员.我已经让GIT-TF为自己工作,但是我公司的其他开发人员都有许可问题.他们可以作为贡献者访问相关项目,但执行项目的克隆会产生权限问题.下面是cmd和错误的快照:
git-tf clone <servername> <projectname>
Connecting to TFS...
Username: <username>
Password:
Password:
Password:
git-tf: Access denied connecting to TFS server <servername> <authenticating as <username>>
Run Code Online (Sandbox Code Playgroud)
当我执行相同的命令时,它不会询问我的用户名和密码,可能是因为我在获得许可的用户下登录了Windows.
谢谢你的帮助.
在我们公司,git
不受支持,只有TFS
.然而,在我的团队中,我们都使用git
并且在使用之前git-tf
我们正在使用git-tfs
.几天前,我和另一位同事决定git-tf
尝试一下,所以我们做了一个git tf clone --deep
我们的项目TFS
.这很好,我们可以在树视图中看到所有变更集作为单独的提交.
我们的一些项目与其他团队共享,因此其他人将进行更改并仅TFS
用于推动他们的更改.我注意到的是,即使我正在使用git tf pull --deep
,所有更改集都捆绑在一个包含所有已更改文件的提交中.即使在TFS历史中,我也可以看到其他团队在最后一天制作了10个变更集.我在历史上只看到了一次新的提交.
阅读git-tf
文档时,我看到了:
拉
git tf pull [--deep] [--rebase]
获取TFS中的更改作为Git中的新提交,并将提交与当前分支中的最新提交合并.默认情况下,pull命令执行的提取很浅,但是--deep选项可用于为自上次提取以来创建的每个TFS更改集创建Git提交.此外,默认情况下,在拉取时使用合并,但是--rebase选项可用于执行rebase.
我错过了什么?我必须使用什么命令才能将每个变更集作为我本地git
分支上的新提交?
编辑1-6-2016
由于我已经问过这个问题并且没有发布任何答案已经有一段时间了,因此可以关闭/删除此问题.也许在未来的版本中,git-tfs
这将成为可能,我会密切关注它.
git-tf ×10
tfs ×8
git ×5
git-tfs ×2
tfs2012 ×2
interop ×1
line-endings ×1
memory-leaks ×1
sidekiq ×1
tfvc ×1