首页 > 解决方案 > 如何推送到分支中的特定目录?

问题描述

我们的办公室目前从 TFVC 切换到 Git 以进行源代码控制,并在此过程中破坏了我们的测试基础设施。我们曾经在我们的服务器上有一个文件夹,然后我们可以确定在 TFVC 中需要签入的位置,然后将其签入那里。然而,我在 Git 上遇到的问题是我们无法将一个文件夹映射到整个 repo,而且我似乎找不到推送到特定目录的方法(我们有大约 100 个不同的标签可以提交测试)。

所以问题是:有没有办法将单个文件从一个目录(~/selenium/tempfolder)推送到一个完全不同的目录(~/testing/{Feature or Bug name}/...)?

编辑:所有这些都是远程完成的,而不是在本地客户端上。当前工作流程:

  1. 在服务器上临时创建文件

  2. 用于Microsoft.TeamFoundation.SourceControl.WebApi创建提交并推送到 master(到 SourceControl 中的临时文件夹)

  3. 推送完成后从服务器上删除文件和临时文件夹
  4. 手动将新文件移动到 /testing 它需要去的地方。

所以困难的是运行 sys 命令,如 cp 或 move。我不在那台机器上,所以我无法运行它们,而且他们不希望我添加一个临时文件夹以外的任何东西(或者如果我们能提供帮助,则根本不添加)。

编辑2:所以我基本上需要从正在创建文件的服务器上的 C:/... 推送到 $/dir/anotherdir/like5moredirs/testing/{feature}

钩子在这里可能更有效......

感谢所有的帮助!

标签: gitdirectorypush

解决方案


这对 Git 来说是一个奇怪的工作流程,也许我不完全理解您的需求。通常,您只需:

cp -R ~/selenium/tempfolder/<filename> ~/testing/{Feature or Bug name}/<filename>`
git add ~/testing/{Feature or Bug name}/<filename>`

也就是说,还有其他方法可以处理它,例如使用子存储库,您可以拉取运行测试而无需拉取整个主存储库:

步骤1

  • 在主存储库中,通过将以下内容添加到.gitignore位于 Git 存储库根目录的文件中,将测试文件夹设置为忽略:

    testing/

现在您放入的任何文件testing/都不会被您的主存储库跟踪。现在您可以更改目录以进行测试并创建子存储库:

mkdir
cp -R ~/selenium/tempfolder/<filename> testing/<filename>
cd testing
git init
git remote add <testing repo url>
git add <filename>
git push origin master

执行上述命令后,您应该已经创建了测试目录和测试 Git 子存储库,将文件从主项目复制到单元测试目录,并将您的更改推送到测试子存储库。

这意味着,在测试服务器上,您只需拉出测试分支,就可以轻松删除旧测试或添加新测试,而不会在主存储库中实际丢失它们。这是我将使用的正常工作流程。


推荐阅读