11

我习惯的:

  • 服务器上的档案(纽约州、印第安纳州、北卡罗来纳州)
  • 在我的开发机器上:
    • 一个名为 ~/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,这没有意义

  • 档案在我的开发机器上,但出于备份原因,近克隆在远程机器上。
  • 进行临时构建意味着删除并重新提取整个存档,这似乎代价高昂。
  • 看起来我有一个名为 ~/git/git.git/git 的目录,其中包含很多 git。

人们是否在 ~/git 中进行所有开发?如果您需要使用 dev、test、release 和 one-off-for-big-client 版本,它们是在 ~/git 下,还是可以在它们自己的树中的其他地方?第三方组件去哪儿了?这对 SO 来说太大了(我需要看书吗),还是可以用 ASCII 树图来回答?

4

2 回答 2

12

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

  1. 这是什么类型的仓库——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 --- 存储在 github.com 上的 Git 存储库
  • gitorious --- 存储在 gitorious.org 上的 Git 存储库
  • git --- Git repo 存储在别处
  • gitsvn --- Subversion repo 使用存储在其他地方的 git-svn 克隆
  • hgbit --- 存储在 bitbucket.org 上的 Mercurial 存储库
  • hg.gcode --- 存储在 Google 代码上的 Mercurial 存储库
  • hg --- 存储在其他地方的 Mercurial 回购
  • svn.gcode --- 存储在 Google 代码上的 Subversion 存储库
  • svn.sforge --- Subversion 存储在 Sourceforge.net 上
  • svn.work ---- Subversion repo存储在我们公司的svn服务器上
  • 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,所以这个答案很可能倾向于那个方向。

于 2009-09-16T16:19:40.860 回答
8

由于 Git 的工作方式,您真的不想将存储库(或分支)的工作目录放在另一个存储库的工作目录下的目录中。它会一直想要将您的子目录的内容放入父目录的存储库中。

如果您将所有分支都作为同级目录,那就可以了。

我倾向于做的(不管使用 Git、cvs 还是(ick)SourceSafe)有一个 Development 目录,每个项目、分支等都是其中的一个子目录。

于 2009-03-31T14:47:09.193 回答