要解释我的需求并不容易,因此很难用谷歌搜索三个关键字无法解释的内容。
那么我需要什么?我有一个Ubuntu 12.04服务器,我的客户主页将在那里。它们需要大量升级,因此很难将文件从我自己的开发服务器复制到客户端服务器。我想在客户端服务器上安装SVN,其中: - 开发版将位于dev.client.com下 - 生产版本将在client.com下 (同一台服务器上的不同文件夹)
因此,当我开发某些内容时,所做的更改在限制区域中可见 - dev.client.com。但是在我们提交之前,它们不会出现在client.com上。
据我了解,SVN通常适用于您的本地计算机,但我不想让开发版本保留在我的本地计算机上。
所以,如果你了解我的需求,你可以帮助我或展示一些有用的方向吗? :)
答案 0 :(得分:2)
由于您在标记列表中提到了git
,我认为您不介意使用它而不是svn
:)。所以我建议采用以下工作流程。
第一个区域是执行开发的计算机(甚至是计算机)。这是你自己的游乐场,你可以自由地做任何你想做的事。还有您的产品的开发安装(托管或其他任何文件夹)。这是您的客户评估" beta版本"的地方。第三个实体是生产代码(再次,主机上的文件夹或其他)。
首先,您在计算机上创建一个[private] git
- 存储库。你还需要创建一个"裸"主机上的存储库,用于在dev.client.com
和client.com
(或两个存储库,如果" beta""生产"区域位于不同主机上)发布项目。请使用git init --bare
。
然后你通常会删除代码。您可以自由地制作任何您想要的东西:更改文件,提交,修改,在历史中来回移动等等。只是不记得提交您的更改:-)不要担心它们存储在本地:)
每当您认为自己创建了值得在dev.client.com
上发布的内容时,就会选择一个适当的提交,并tag
将其作为例如{1}}。 beta/v1.2.3.1234
。如果您认为自己创作了值得在制作区域发布的内容,则tag
将其作为例如rel/v1.2.3
。然后,您push
需要标记到托管存储库(或存储库)。
现在变化已经存在,但他们仍然已经打包了#34;进入存储库,文件系统不可见。你需要check out
他们。
您可以直接登录主机并手动运行如下命令:
cd /path/to/dev.client.com/dir/
GIT_DIR=/path/to/repository GIT_WORK_DIR=. git checkout beta/v1.2.3.1234
cd /path/to/client.com/dir/
GIT_DIR=/path/to/repository GIT_WORK_DIR=. git checkout rel/v1.2.3
这些步骤可以自动完成。每当有人推送一些提交和引用时,就会在托管网站上运行post-receive
git hook。