git - 什么样的目录结构对 DVCS(例如 git)有意义?

标签 git dvcs

我的习惯:

  • 服务器上的文件(NY、IN、NC)
  • 在我的开发机器上:
    • 名为 ~/work 的目录
    • 名为 ~/work/NY/devproject、~/work/NC/project 等的子目录
    • 不常见的是,子目录名为 ~/work/NY/release/1.3/project、~/work/NY/test/1.3b/project 等
    • 有时目录名为 ~/proxy/NY、~/proxy/NC 等,其中包含存档的一次性本地缓存,以减少读取的网络流量。这些目录可以随时删除。
  • 删除 ~/work/... 并从文件中重新填充它的临时构建

但是对于没有意义的 DVCS

  • 存档在我的开发机器上,但出于备份原因,近克隆在远程机器上。
  • 进行从头构建意味着删除并重新 pull 整个存档,这看起来很昂贵。
  • 看起来我有一个名为 ~/git/git.git/git 的目录,里面有很多 git。

人们是否在 ~/git 中进行所有开发?如果您需要使用开发、测试、发布和一次性大客户端版本,这些是在 ~/git 下,还是它们可以在它们自己的树中的其他地方?第三方组件去哪儿了?这对 SO 来说太大了吗(我需要读一本书),还是可以用 ASCII TreeMap 来回答?

最佳答案

我同意 T.E.D. 的回答,因为我更愿意将每个项目都保存在一个开发目录中。但是,当我在终端中查看 bash 列表时,我喜欢轻松地看到三件事:

  1. 这是什么类型的 repo --- Git、Mercurial 或 Subversion
  2. 伪中央仓库存储在哪里 --- Github.com、Bitbucket.org、Google Code 等。
  3. 谁拥有伪中央仓库

我发现我可以通过为我的项目使用以下命名约定轻松地做到这一点:

~/development/project.whatwhere.who

由于在使用Mercurial克隆本地项目时很常见,因此我在目录结构中添加了一层:

~/development/project.whatwhere.who/project/   # Initial clone from remote repo
~/development/project.whatwhere.who/project.local.blah_descriptor/  # Local hg clone

我使用的whatwhere约定如下:

  • github --- Git repo 存储在 github.com 上
  • gitorious --- Git repo 存储在 gitorious.org
  • git --- Git 仓库存储在别处
  • gitsvn --- 使用存储在别处的 git-svn 克隆的 Subversion 仓库
  • hgbit --- Mercurial repo 存储在 bitbucket.org 上
  • hg.gcode --- 存储在 Google 代码上的 Mercurial repo
  • hg --- Mercurial repo 存储在别处
  • svn.gcode --- 存储在 Google 代码上的 Subversion 仓库
  • svn.sforge --- 存储在 Sourceforge.net 上的 Subversion 仓库
  • svn.work ---- 存储在我们公司svn服务器上的Subversion repo
  • svn --- Subversion repo 存储在某处

who 约定只是所需人员的用户名。

下面是一些项目示例,都位于我的~/development/ 目录中:

fabric.github.bitprophet      # Bitprophet's fabric project cloned from Github
fabric.github.myusername      # My fork of the fabric project from Github
virtualenv.hgbit.ianb         # Ianb's virtualenv project cloned from Bitbucket
growl.hg.gcode                # Growl project cloned from Google code
ledgersmb.svn.sforge          # LedgerSMB project checked out from Sourceforge
coldfire.gitsvn               # Coldfire Subversion project at work cloned using git-svn
coldfire.svn                  # Coldfire Subversion project at work checked out with svn

如果您的项目太多,为了帮助组织您的项目,您可能需要在 ~/development 目录下直接添加一个层用于组织。例如,您可以拥有以下目录:

~/development/workprojects/
~/development/opensrcprojects/
~/development/personalprojects/

注意:我通常将 Git 用于 DVCS,因此这个答案很可能倾向于那个方向。

关于git - 什么样的目录结构对 DVCS(例如 git)有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/701104/

相关文章:

php - 从 PHP 读取 Git 提交消息

用于访问 Hg、Git 和可能的 Bazaar 存储库的 Python 包装器?

mercurial - 在 Mercurial (Hg) 中,列出自修订版 4822 以来我修改的所有文件的好方法是什么?

git - 我如何告诉 Git 它移动/重命名错误(误报)

version-control - 使用 darcs 拉取已删除文件时出现冲突标记混淆

git - 我可以从另一个分支添加对暂存区的更改吗?

git - 如何防止 OpenSSH 关于主机 key 攻击的警告?

git - 编辑 git 子模块

git - 你什么时候会使用 .git/info/exclude 而不是 .gitignore 来排除文件?

git - 如何将新的本地分支推送到远程 Git 存储库并跟踪它?