【问题标题】:Single git repo setup tracking multiple locations on hard drive单个 git repo 设置跟踪硬盘驱动器上的多个位置
【发布时间】:2013-07-14 04:10:07
【问题描述】:

我对 git 的世界很陌生(过去做过一些 svn),并且想要一些关于尝试完成以下工作的建议。

我当前的工作流程是在移植到 Wordpress 模板之前使用 Middleman 设置静态 html 文件以获取基本 HTML 结构和样式。这些静态文件位于C:/git/project-name/HTMLTemplates

我的 wordpress 设置使用 Xampp,所以主题文件保存在 C:/Xampp/wordpress/wp-content/themes/project-theme

我想做的是有一个 git repo 来跟踪两个不同位置(HTMLTemplates 和项目主题)的变化

这完全有可能吗,还是我只是创建两个单独的存储库(例如:proect-static 和 project-wordpress)?

【问题讨论】:

  • 如果您使用的是 Linux 或 Mac,您可能可以使用符号链接来执行此类操作,并将所有版本控制在 Git 中的一个文件夹下。不知道你怎么能在 Windows 中做到这一点。这是你以前在 SVN 中可以做的事情吗?
  • 感谢@Cupcake 的建议。我也没有在 SVN 中尝试过,但从我读过的内容来看,这似乎是可能的。
  • @Cupcake:嗯,在 SVN 中,您可以将两个目录放在一个 repo 中,并在适当的位置签出每个目录,因为 SVN 有部分签出。这不是(很容易)用 git 实现的。

标签: wordpress git version-control middleman


【解决方案1】:

不,git 中没有这种机制。 Git 假定它管理的所有文件(“工作副本”)都存在于单个目录(和子目录)中;不支持在 repo 中管理两个单独的目录。

因此,您必须以某种方式将所有内容保存在一个目录中,可能是子目录HTMLTemplatestheme 或类似目录。

您可以使用两个 git 存储库,但我强烈建议您不要这样做。一个 repo 应该包含一个完整的“项目”,即构建一个软件所需的一切(不包括外部库之类的东西)。如果您将项目拆分到两个存储库中,则无法有效地分支和合并(因为您必须同时在两个存储库中执行此操作),您无法轻松签出旧版本等。

为了解决您的问题,我看到了一些可能的解决方案:

  • 有一些构建/部署脚本可以将所有内容复制到正确的位置。您可能已经有一个调用 Middleman 的脚本,并且可能告诉 Wordpress 刷新其缓存,因此您可以将其添加到那里。
  • 为 wordpress 目录设置符号链接。在类 UNIX 系统上,这很容易并且通常可以完成。在 Windows 上,您可以创建 "junction points",我相信它的工作方式类似。
  • 配置 Wordpress / Apache 以直接从您的 git 工作副本中读取目录。路径应该是可配置的。

我更喜欢第一种解决方案;这具有额外的优势,它将您的开发环境与服务器配置分离。如果您的设置稍后更改或您的项目需要在不同的环境中运行(在不同的机器上开发,其他人也想处理您的项目,您想部署到某处的托管服务器等),这将使您更容易。

注意: 我相信,问题在于您正在尝试使用 git 作为部署工具。虽然很多人都这样做,但 git 并不真正适合这个目的。部署通常应该是一个单独的步骤。

【讨论】:

  • 我不知道 Windows 有“连接点”这样的东西。这是一个有趣的选择,如果它运作良好的话。至于 Git 不适合作为部署工具,我还不相信这一点,因为就像你说的那样,很多人似乎都在为此目的使用它。事实上,Heroku 等服务鼓励您使用 Git 进行部署,不是吗?
  • 谢谢@sleske!这非常有帮助。我没有将 git 用于部署目的(为此我使用 FTP),我只是在 Middleman 中启动一个项目,然后手动将所有内容复制到我的本地 wordpress 实例(需要更好地自动化)。所以我想做的是拥有; 1. C:/GIT/project-name/HTMLTemplates/(中间人文件) 2. C:/GIT/project-name/WP-Theme/theme-name/(wordpress 主题) 路径 2 链接到本地​​ wordpress 主题(C: /Xampp/htdocs/wordpress/wp-content/themes/theme-name) 然后 Git 跟踪 C:/GIT/project-name 下的两个文件夹。 xampp wordpress如何知道Path 2中的主题?
  • @TomGillard:正如我在回答中所写:要么使用连接点使C:/Xampp/htdocs/wordpress/wp-content/themes/theme-name 指向C:/GIT/project-name/WP-Theme/theme-name,要么重新配置 WP,或者编写一个将主题文件复制到 WP 目录的脚本.如果您对特定步骤有疑问,请考虑发布一个新问题。
  • 对于任何感兴趣/有相同问题的人,我发现以下关于连接点的文章最有帮助(@sleske 在他的回答中提到)windows7themes.net/…
  • @TomGillard:嗯,这篇文章对我来说似乎是错误的。他们声称“如果没有一些附加组件,就无法在 Windows 7 中创建连接点。”但是,您可以使用mklink,从 Windows Vista 开始可用。
猜你喜欢
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 2017-08-19
  • 2010-09-09
相关资源
最近更新 更多