Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 一台服务器上的最佳实践(或建议)、三个SSH登录、一个远程Git repo_Linux_Git - Fatal编程技术网

Linux 一台服务器上的最佳实践(或建议)、三个SSH登录、一个远程Git repo

Linux 一台服务器上的最佳实践(或建议)、三个SSH登录、一个远程Git repo,linux,git,Linux,Git,背景资料: 我们目前是3名网络程序员(好朋友,现实生活中的朋友,没有不信任问题) 每个程序员都使用sudo powers以自己的用户名将SSH连接到代码所在的单个Linux服务器中 我们都在同一时间对不同的文件进行处理。我们有时会问“你在档案里吗?”。我们使用Vim,以便知道文件是否已打开 我们的开发代码(尚未生产)位于/var/www/ 目前,我在/var/repos/下建立了一个本地Git回购 我们的远程回购托管在 我是Git的新手。我以前使用过subversion,但我基本上都是填鸭式的指

背景资料:

  • 我们目前是3名网络程序员(好朋友,现实生活中的朋友,没有不信任问题)
  • 每个程序员都使用sudo powers以自己的用户名将SSH连接到代码所在的单个Linux服务器中
  • 我们都在同一时间对不同的文件进行处理。我们有时会问“你在档案里吗?”。我们使用Vim,以便知道文件是否已打开
  • 我们的开发代码(尚未生产)位于/var/www/
  • 目前,我在/var/repos/下建立了一个本地Git回购
  • 我们的远程回购托管在
  • 我是Git的新手。我以前使用过subversion,但我基本上都是填鸭式的指令,并且被告知要键入什么来同步代码并提交
  • 我读了大约一半的Scott Chacon的书,这就是我大部分Git知识的范围
  • 如果有必要,我们运行Ubuntu 11.04、Apache 2.2.17和Git 1.7.4.1
我开始认为我需要做的是在每个用户的主目录下有3个独立的本地repo(记住,这仍然是在同一台服务器上)。但是,如果我们都在同一个网站上工作,代码在/var/www/上,这还有意义吗

还有一些稍微相关的问题:

  • 根据我的理解,我是想直接修改我的本地repo(这意味着为了调试,我的repo需要通过驻留在/var/www/中从浏览器可见),还是想从开发目录手动复制编辑过的文件并覆盖我的本地repo以跟踪、提交,然后推送
  • 如果我想从我的本地repo复制,我可以复制并覆盖整个开发目录,让Git知道哪些是未跟踪的(我认为这在subversion中是不可能的)?还是我仍然需要手动跟踪编辑过的文件
    • 正常设置为:

      • 每个开发者都有自己的本地工作副本,无论他们想在哪里;可能是他们的台式机,因为本地工作总是比通过ssh更快

      • 服务器上的中心、裸存储库(在
        /var/repos
        中)

      • 中央存储库中的
        post update
        钩子,在推送到master时更新
        /var/www
        。有两种方法:

        • 使用
          git archive
          tar
          将文件复制到

        • /var/www/
          作为存储库/签出并在其中运行
          git update

        后者更容易,唯一的缺点是您必须将web服务器配置为阻止
        .git
        目录

      但是,您可以先在那里创建一个工作目录,即git init、git add和git commit,然后逐步从那里切换

      添加传统问题:Git有一个它知道的文件列表。如果您只需擦除除
      .git
      之外的所有内容并放入新内容,它就会对其进行排序。但是把
      /var/www
      变成一个存储库更容易;通过配置服务器或仅配置权限(只需将
      .git
      目录用户和组设置为www服务器没有但您有权限的目录用户和组,并将权限设置为770),可以轻松地防止
      .git
      从浏览器可见。

      正常设置为:

      • 每个开发者都有自己的本地工作副本,无论他们想在哪里;可能是他们的台式机,因为本地工作总是比通过ssh更快

      • 服务器上的中心、裸存储库(在
        /var/repos
        中)

      • 中央存储库中的
        post update
        钩子,在推送到master时更新
        /var/www
        。有两种方法:

        • 使用
          git archive
          tar
          将文件复制到

        • /var/www/
          作为存储库/签出并在其中运行
          git update

        后者更容易,唯一的缺点是您必须将web服务器配置为阻止
        .git
        目录

      但是,您可以先在那里创建一个工作目录,即git init、git add和git commit,然后逐步从那里切换


      添加传统问题:Git有一个它知道的文件列表。如果您只需擦除除
      .git
      之外的所有内容并放入新内容,它就会对其进行排序。但是把
      /var/www
      变成一个存储库更容易;通过配置服务器或权限(只需将
      .git
      目录用户和组设置为www服务器没有但您有权限的目录用户和组,并将权限设置为770),就可以轻松地防止
      .git
      在浏览器中可见.

      好的,这意味着每个开发人员都需要自己的本地灯堆栈在机器上进行本地测试。将代码迁移到本地repo不会有太大问题,但是数据库呢?我们运行MySQL,我们的应用程序只有2个表,可以很容易地用Python脚本填充,但是将来当复制数据库可能不是一个选项时,我们应该远程连接到服务器的数据库吗?或者我们应该只需要一个样本数据来进行测试?谢谢你的回复@霍布斯3:你可以选择任何一个,这都没关系。只要有一个带有数据库连接设置的本地未版本配置文件,并根据需要切换即可。事实上,我可能最终会有两个本地数据库,一个是用于测试模式和其他破坏性更改的样本数据,另一个是用于在实际负载下测试的代表性数据。好的,这意味着每个开发人员都需要在他们的机器上使用自己的本地LAMP堆栈进行本地测试。将代码迁移到本地repo不会有太大问题,但是数据库呢?我们运行MySQL,我们的应用程序只有2个表