我的习惯:
- 服务器上的文件(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 列表时,我喜欢轻松地看到三件事:
- 这是什么类型的 repo --- Git、Mercurial 或 Subversion
- 伪中央仓库存储在哪里 --- Github.com、Bitbucket.org、Google Code 等。
- 谁拥有伪中央仓库
我发现我可以通过为我的项目使用以下命名约定轻松地做到这一点:
~/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/