Articles of 版本控制

Git仓库软件项目和伴随服务器代码的理想工作stream程?

我使用Git来pipe理我的(iOS)项目的源代码,我已经做了一段时间,这很好。 不过,我现在开始添加一个服务器端组件,并且我想确保服务器端代码保存在同一个仓库中,但与主代码分离 – 并在Web服务器上设置这样整个代码库和历史将不可访问。 使用两台计算机上的代码库(一个本地服务器和一个坐在Web服务器上)的理想Git工作stream程是什么? (顺便说一下,我使用的是Nginx,如果在设置服务器configuration来隐藏Git文件和历史logging方面有什么不同的话)。

NGINX API版本控制技术

我正在寻找使用NGINX来处理API版本。 我认为这将如此简单,以处理发送stream量到不同的URL: location = /1.0/* { root = /var/www/html/version_1.0/public; } location = /1.1/* { root = /var/www/html/version_1.1/public; } 然后我会写一些重写的​​forms去掉1.0 /或1.1 / URL。 那是对的吗? 总之,定位方法不起作用。 我的语法closures了吗? 谢谢!

在nginx中自动版本化CSS / JS

我有一个设置,其中nginx提供所有静态内容(CSS / JS)。 我们的问题是,当我们更新静态内容时,浏览器不一定立即更新它们,当我们推新版本的时候会导致问题。 我想有一个nginx插件,基本上取代了所有的CSS / JS调用和广告版本号,如下所示: 之前: <link rel="stylesheet" type="text/css" href="/media/css/style.css" /> 后: <link rel="stylesheet" type="text/css" href="/media/css/style.css?3428432" /> 并根据style.css文件本身的最新更改date自动执行此操作。 所以我不必更新HTML。 有这个插件吗? 我知道Google的mod_pagespeed在他们的apache2模块中做了类似的事情,但我找不到任何人用于nginx。

Mercurial unbundle错误:中止:…未知的捆绑软件版本20

我在Linux的Ubuntu 14.04 LTS和我使用Mercurial分布式SCM(版本3.3.2)。 我尝试使用命令行解压Mac OSX上制作的mercurial hg bundle: hg unbundle XXX.hg 中止:XXX.hg:未知的捆绑软件版本20 有没有人有什么线索是怎么回事? 谷歌的研究并没有提供太多的信息。

你如何确定你正在运行最新的可执行文件?

每隔一段时间我(重新)编译一些我正在处理的C(或C ++)文件 – 顺便说一句,没有任何警告 – 然后我执行我的程序,只是意识到自从我以前的编译以来没有任何改变 。 为了简单起见,我们假设我给我的源添加了一条指令,将一些debugging信息打印在屏幕上,这样我就有了麻烦的直观证据:事实上,我编译,执行,并且意外地没有任何内容被打印到屏幕上。 当我有一个错误的代码(我跑出了一个静态数组的界限),这发生了一次。 当然,如果你的代码有某种隐藏的 bug( 一个C ++程序员应该知道的所有常见的未定义的行为是什么? ),编译的代码可以是任何东西。 当我使用一些速度慢得可怕的networking硬盘时,这种事情发生了两次,我猜 – 编译后没有更新我的可执行文件,尽pipe更新了源代码,我还是继续运行并运行旧版本。 我只是在这里推测,如果这种现象是不可能的,可以自由地纠正我,但是我怀疑它不得不在一些等待IO的进程上做些什么。 那么,当你在错误的目录中执行旧版本(即:执行类似的事情,但实际上完全与源无关)时,这样的事情当然会发生(而且确实如此)。 这又一次发生了,这让我感到很烦恼,请问:您如何确保您的可执行文件与您正在处理的源代码相匹配? 我应该比较主函数中的源代码和可执行文件的datestring吗? 我应该在编译前删除可执行文件吗? 我想人们可能会通过版本控制来做类似的事情。 注:我被警告说这可能是一个可能注定要closures的主观话题。

远程git回购不能在合并挂钩后自动签出

我有一个远程非裸Git回购,这是我的静态博客网站。 我每次在本地master分支中推送一个提交到远程master分支,并有一个post-update钩子,如下所示: echo "hook…" git merge master echo "after hook…" 在远程回购,有一个默认检出的pages分支,我想要的是pages分支不断更新master分支和自动签出到工作区。 但是,工作区不能自动结帐,但是这两个分支已经更新了。 总之,我想要的是工作区可以在pages分支每次合并后更新。 这样我的网站也可以更新。 ==========detail process=========== ==local repo: *master ==remote repo: *pages master git push local-master —> remote-master [OK] 触发钩做: git merge master pages到分支(已签出)[确定] 工作空间已更新(这是我想要的)[NOT-OK]

如何设置git和maven一起工作?

我对这两种工具都是新手,对于Linux系统pipe理我也是一个新手,所以我提前道歉,看起来像是一个总的问题。 基本上,我从头开始一个全新的项目。 Yaaay! 精彩! 但是,如何build立这个项目我有点遗憾。 我已经在我的开发机器上安装了git和maven,并运行一些教程。 我也在我的服务器上设置了git,并成功地将代码推送到它并从中取出代码。 所以,第一个问题:使用git和maven是一个好主意吗? Git似乎是最好的源代码控制系统,而Maven看起来是最好的构build系统。 他们知道一起工作好吗? 还是在项目的这个早期阶段(不稳定)为我自己制造麻烦? 我已经使用了足够的ant知道我不想使用它,我不是svn的粉丝,尽pipe如果我必须使用它。 第二个问题:鉴于这两种工具可以很好地协同工作,最佳实践方法是什么? 我知道git是“点对点”的,尽pipe我认为没有任何东西可以阻止你为git用户设置一个单独的存储库,并且让所有的开发者在做构build的时候与这个repo同步。 这是正确的路吗? Maven怎么样? Maven似乎有点单用户导向。 就像,每个人都在自己的机器上设置Maven,并拥有自己的Maven回购,对不对? 还是错? 在我的服务器上创build一个“Maven用户”是否有意义,并让该用户从“main”git repo中完成所有的构build? 道歉,如果我完全错误的如何使用这些工具。 正如我所说,我对这些东西很新。 你有任何帮助,是赞赏。 (另外,我正在使用Linux,在Eclipse中执行Java开发工作,使用Spring作为框架,使用mysql作为数据存储,使用Hibernate作为ORM,不知道任何重要的事情) 谢谢!

Linux文件系统骨架版本控制

我们正在做一些embedded式Linux项目,供应商提供给我们一个基本的文件系统框架,我们想把它放到版本控制系统(GIT)中,但是有一些GIT不喜欢的特殊文件,例如设备文件,pipe道文件等等。如果有人有更好的build议把文件系统置于版本控制之下,我该如何做? 谢谢!

Subversion sudo svn update更改文件所有权和rwx

我限制了某些文件settings.py在我的svn链接的目录中的权限,以便它只能被sudo用户和apache(通过用户名www-data 。 所以,在settings.py中,我设置了sudo chmod 640 settings.py和sudo chown www-data:www-data settings.py 。 我仍然希望我的无特权用户能够svn update和svn commit ,所以与sudo visudo ,我已经设置 unprivileged_user ALL = /usr/bin/svn commit *, /usr/bin/svn update *, \ /usr/bin/svn update 让这个用户仍然可以做sudo svn commit和sudo svn update 。 由于settings.py权限有限,它不能执行普通的svn commit或者svn update 。 如果非特权用户试图这样做,会有一个svn的消息,说工作副本被locking。 但是我注意到,当我做sudo svn update ,unprivileged_user以root身份进行更新,结果从svn仓库更新的文件现在由root:root拥有root:root具有644特权的root:root 。 这与我正在尝试使www-data:www-data所拥有的settings.py拥有www-data:www-data 。 我能做些什么来使www-data永远是所有者,rwx的特权保持不变?

使用git进行分支特定的configuration文件维护

这个问题让我感到困惑很久,因为我找不到很好的或多或less的通用解决scheme。 假设有两个可用的git分支, production和dev ; 每个使用它自己的一些任务可configuration参数(即凭据,构buildpath,testing/部署脚本开关等等)。 同时执行脚本和代码对于两个分支都是常见的。 现在,问题出现了 – 如何按照需要在git存储库中维护特定于分支的configuration。 一个常见的解决scheme是在git中使用'template'configuration文件,符号链接和忽略特定分支的具体内容,比如 $ cat .gitignore | grep conf /concrete.conf $ ls -l *.conf lrwxrwxrwx 1 1000 100 12 Oct 29 10:23 concrete.conf -> generic.conf -rw-r–r– 1 1000 100 0 Oct 29 10:16 generic.conf 然后在开发框中打破并调整concrete.conf 。 然而,这不是我追求的解决scheme。 我的要求(好, 祝愿 )是: 支持每个git分支独立的configuration文件,以及 同时保持由gitpipe理的分支特定的configuration文件 这甚至有可能吗? 可能(实际上,最好是由其他人的文件来源,但是没有关系…) 到目前为止我所想到的最好的方法是使用合并后钩子从git忽略的其他来源调整每个分支的configuration本身 ,但从一开始就很糟糕。 任何关于解决问题的build议? PS:*特定于nix的build议(即使用符号链接/硬链接)的build议是绝对好的,我确实对M […]