我正在潜入Git的世界,我的第一项任务是自动化我们的构建过程。我使用的是Bash,因为这是我熟悉的,它似乎是我需要的。用Bash脚本克隆Git回购
在构建我的代码之前,我需要将最新版本的repo克隆到我的PC。
我似乎有一个捕获22.我想从Bash脚本克隆回购,这将是我试图克隆回购的一部分。
我希望我的构建/ bash脚本可以在源代码控制下与其他任何东西一起...但我还想要一个命令操作。
其他人如何解决这个问题?我最熟悉ClearCase,因此Git正在采取一些习惯。
我正在潜入Git的世界,我的第一项任务是自动化我们的构建过程。我使用的是Bash,因为这是我熟悉的,它似乎是我需要的。用Bash脚本克隆Git回购
在构建我的代码之前,我需要将最新版本的repo克隆到我的PC。
我似乎有一个捕获22.我想从Bash脚本克隆回购,这将是我试图克隆回购的一部分。
我希望我的构建/ bash脚本可以在源代码控制下与其他任何东西一起...但我还想要一个命令操作。
其他人如何解决这个问题?我最熟悉ClearCase,因此Git正在采取一些习惯。
Git clone
与ClearCase mkview
类似,它创建了一个新的工作文件夹,作为与存储库中的文件进行交互的主要方式。如果你正在为ClearCase编写这个脚本,你真的会开始创建一个新的ClearCase视图吗?如果你这样做了,你会有同样的catch-22情况。
常用的方法是假定clone
操作是作为此构建系统的一次性设置的一部分完成的,并且该脚本已经可以访问工作文件夹。你更感兴趣的Git命令是clean
,checkout
,fetch
,pull
和reset --hard
。 Git命令之间有重叠,所以你不需要所有这些。显然,Git命令的选择以及你要调用它们的选项取决于你想要脚本执行的操作。
完成这样的操作后,将脚本保存在存储库中是没有问题的,除非您将版本控制与您正在构建的代码放在同一分支中。这并不一定是坏的,但与ClearCase中(通常)会发生的不同。
基本上我可以做一个混帐'结账branch_name'或'git的结帐master'的同步我的本地回购与最新变化在每个分支上? @gatkin – user7379734
本质上。我不会写你的脚本,但'git fetch; git checkout master; git reset --hard origin/master'应该让你开始。 – gatkin
不要将部署脚本与其部署的代码存储在相同的回购站中,这是没有意义的。 – meagar
这是一个捕获22,因为克隆存储库是一个动作,根据定义,* external *到存储库。至少,存储库的克隆脚本必须独立于构建系统的其余部分进行部署。理想情况下,整个构建系统位于存储库之外;它将*作为*输入*包含要构建的软件的存储库。 – chepner
所以我使用的是一个持续集成服务(在我的例子中是travis-ci),在github上倾听我的主分支。推动触发器构建将repo克隆到travis环境中 - 从那里我可以访问我的部署脚本,如果构建通过,则会触发部署脚本。 – Lix