0

我有一个 git 存储库设置(使用 gitblit)、Jenkins 和 Team Foundation Server (TFS)。我想做的是:

1) 让工程师将代码提交到 git 存储库。

2) Jenkins 将编译代码。

3) Jenkins 会将代码更改添加到 TFS 中。

很简单吧?好吧,我遇到了在 TFS 中反映已删除文件的问题。我的工作如下:

1) Jenkins 运行一个脚本,删除 Jenkins 工作区中的所有文件和文件夹

2) 然后 Jenkins 将文件从 git repo 克隆到 Jenkins 工作区。

git clone git://devfilesrepo.company.com/DevFiles.git %WORKSPACE%

3) Jenkins 执行一个包含以下 TFS 命令的批处理文件:

set checkinComment=%1
tf workfold /collection:http://faketfs:8080/faketfs/DefaultCollection     /workspace:DevFiles /map $/Dev/DevFiles "C:\Jenkins\jobs\DevFiles\workspace" /login:Company\admin,fakePass
tf checkout "C:\Jenkins\jobs\DevFiles\workspace" /noprompt /recursive /login:Company\admin,fakePass
tf add "C:\Jenkins\jobs\DevFiles\workspace" /noprompt /recursive /login:Company\admin,fakePass
tf resolve /auto:KeepYours /noprompt /recursive /login:Company\admin,fakePass
tf checkin /comment:%checkinComment% /noprompt /recursive /login:Company\admin,fakePass

现在,如果文件在进入 Git 时被添加或编辑,则上述命令非常有效。但是,如果一个文件曾经从 Git 中删除,它不会反映在 TFS 中。

使情况更加复杂。我还需要向 TFS 添加一些在 Git 存储库中不应该存在的文件。

是否有我可以运行的 TFS 命令来反映已删除的更改?

我正在考虑在从 Git 添加文件之前删除 TFS 文件夹,但是我也会删除直接添加到 TFS 的文件。我听说过 Git-TF 和 Git-TFS,这些实用程序能做我想要的吗?如果是这样,我可以运行哪些命令将代码从 Git 转移到 TFS?

谢谢

4

1 回答 1

0

要获取删除,您需要将方法更改为类似的方法。

  • 像现在一样运行tf checkout命令
  • 通过普通命令行方法删除文件夹内容,不包括您要保留的不在 git 中的文件。您需要attrib -r首先关闭文件以关闭只读标志。
  • 将 git repo 的内容复制到文件夹中
  • 使用TFS 电动工具,尤其是tfpt online命令。TFS 会将服务器工作区与本地文件系统的内容进行比较,并将其检测到的所有添加、删除和编辑添加到挂起的更改中。您需要的具体命令是

tfpt online /adds /deletes /diff /noprompt /recursive <folderName>

  • 像当前一样运行tf resolveandtf checkin命令。

你可能需要稍微调整一下方法,但这应该会给你你所追求的。

于 2015-04-24T01:13:22.683 回答