小编Mic*_*jen的帖子

如何使用refspec将Git标签推送到分支?

我想强制推送,例如,我的标签1.0.0到我的远程master分支.

我现在正在做以下事情:

git push production +1.0.0:master
Run Code Online (Sandbox Code Playgroud)

我想强制推送,因为我关心的是1.0.0标签内的代码被推送到master远程存储库的分支.

我究竟做错了什么?

更新#1

当我通过SSH连接到我的Git存储库并执行的服务器时git branch -l,我也看不到master列出的分支.

更新#2

git tag -l从远程Git存储库内部运行后,我看到它master已列出,这意味着当我运行以下代码时:

git push production 1.0.0:master
Run Code Online (Sandbox Code Playgroud)

它实际上推送了标签并创建了一个名为 master而不是新分支的标签.

我想基本上将标签的内容1.0.0送到master远程Git存储库的分支.

git git-push git-tag

216
推荐指数
4
解决办法
13万
查看次数

MySQL"IN"运算符的性能(大?)数值

我最近一直在试验Redis和MongoDB,看起来通常情况下你会在MongoDB或Redis中存储一组id.因为我在询问MySQL IN运算符,所以我会坚持使用Redis来解决这个问题.

我想知道在IN运算符中列出大量(300-3000)id的性能如何,看起来像这样:

SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
Run Code Online (Sandbox Code Playgroud)

想象一下像产品类别表这样简单的东西,你通常可以将它们加在一起以获得某个类别产品.在上面的示例中,您可以看到在Redis()中的给定类别下,我返回ID为4的类别中的所有产品ID,并将它们放在运算符内的上述查询中.category:4:product_idsSELECTIN

这是多么高效?

这是"依赖"的情况吗?或者是否有一个具体的"这是(不)可接受的"或"快速"或"慢"或者我应该添加LIMIT 25,还是没有帮助?

SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
Run Code Online (Sandbox Code Playgroud)

或者我应该修剪Redis返回的产品ID数组,将其限制为25,并且只将25个id添加到查询而不是3000并且LIMIT从查询内部将其添加到25?

SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
Run Code Online (Sandbox Code Playgroud)

任何建议/反馈非常感谢!

mysql sql performance operators

79
推荐指数
5
解决办法
4万
查看次数

Git在推送时创建远程存储库

我一直试图弄清楚这一点,但我很难这样做.我目前的工作,需要我允许用户一个开源项目到远程仓库没有它已经存在那里.我想避免手动登录到服务器并运行git initgit init --bare.

出于显而易见的原因,我在尝试将本地存储库推送到不指向远程服务器上的现有存储库的路径时收到以下错误:

fatal: '/var/repositories/myrepo' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

但我希望能够运行以下命令:

git push origin master
Run Code Online (Sandbox Code Playgroud)

而且有创造/myrepo/var/repositories,如果它不存在.我怎么能做到这一点?我会假设它是某种(全局)git配置设置,你可能在远程服务器上设置,或者在本地设置(特定于存储库)git配置,但我无法弄明白.

任何帮助将非常感激!

谢谢!

git git-push git-config git-remote

26
推荐指数
3
解决办法
2万
查看次数

使用Upstart设置内存消耗限制

我最近非常喜欢Upstart.以前我一直在使用God,Monit和Bluepill,但我并不喜欢这些解决方案,所以我试试Upstart.

我一直在使用Foreman gem为我的进程生成一些基本的Upstart配置文件/etc/init.但是,这些生成的文件只处理崩溃进程的重新生成.我想知道是否有可能告诉Upstart重新启动一个消耗> 150mb内存的过程,就像Monit,God或Bluepill一样.

我通读了Upstart文档,看起来就像我正在寻找的东西.虽然我不知道如何配置这样的东西.

我基本上想要的很简单.web如果内存使用率为> 150mbram,我想重新启动我的进程.这些是我的文件:

|-- myapp-web-1.conf
|-- myapp-web-2.conf
|-- myapp-web-3.conf
|-- myapp-web.conf
|-- myapp.conf
Run Code Online (Sandbox Code Playgroud)

他们的内容是:

myapp.conf

pre-start script

bash << "EOF"
  mkdir -p /var/log/myapp
  chown -R deployer /var/log/myapp
EOF

end script
Run Code Online (Sandbox Code Playgroud)

MYAPP-web.conf

start on starting myapp
stop on stopping myapp
Run Code Online (Sandbox Code Playgroud)

myapp-web-1.conf/myapp-web-2.conf/myapp-web-3.conf

start on starting myapp-web
stop on stopping myapp-web
respawn

exec su - deployer -c 'cd /var/applications/releases/20110607140607; cd myapp && bundle …
Run Code Online (Sandbox Code Playgroud)

process upstart limit memory-consumption

19
推荐指数
1
解决办法
4310
查看次数

包括来自另一本食谱的厨师LWRP

我写了一个小LWRP我的app食谱(trim_log),它的工作原理.但是,现在我正在尝试将这个特定的LWRP移动到commons食谱中,这样我的其他食谱也可以使用它.问题是我无法弄清楚如何将trim_log资源/提供者加载到任何烹饪书中,包括我的app食谱.

??? app
?   ??? recipes
?       ??? default.rb
??? commons
   ??? providers
   ?   ??? trim_log.rb
   ??? resources
       ??? trim_log.rb
Run Code Online (Sandbox Code Playgroud)

我已经trim_log在commons cookbook中定义了提供者/资源.现在我希望trim_logappcookbook中使用这个提供者/资源.我怎么能在那里提供它?

chef-infra lwrp

9
推荐指数
1
解决办法
9039
查看次数

Vim,Tabular和Ruby 1.9哈希

假设我有以下选项Hash作为Ruby 1.9.x中方法的参数:

my_method :arg1,
  some_option: "value 1"
  some_other_option:true
  option_three: 123
Run Code Online (Sandbox Code Playgroud)

使用Tabular VIM插件,正则表达式将获得选项哈希对齐,如下所示:

my_method :arg1,
  some_option:       "value 1"
  some_other_option: true
  option_three:      123
Run Code Online (Sandbox Code Playgroud)

:已经留连接到钥匙,不像,例如,JSON.

或许更具视觉吸引力的风格,看起来更加一致:

my_method :arg1,
        some_option: "value 1"
  some_other_option: true
       option_three: 123
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何使用Tabular完成这些对齐中的任何一个?

谢谢!

vim hash alignment tabular ruby-1.9

8
推荐指数
1
解决办法
1541
查看次数

OSX/Linux上的Monit + RVM + Thin

在尝试了几个小时(并且还尝试了上帝和Bluepill)后,我决定在这里提出我的问题,因为我完全不知道如何解决这个问题.

我有一个Rails应用程序.我想使用Thin作为我的应用服务器.我想使用Monit来监控我的Thin实例.我使用RVM来管理我的Ruby版本作为我的本地用户.

我有以下monit文件设置,可以做我想做的事,但不是:

check process thin-81
  with pidfile /Users/Michael/Desktop/myapp/tmp/pids/thin.81.pid

  start program = "/Users/Michael/.rvm/gems/ruby-1.9.2-p180/bin/thin start -c /Users/Michael/Desktop/myapp -e production -p 81 -d -P tmp/pids/thin.81.pid"
  stop program = "/Users/Michael/.rvm/gems/ruby-1.9.2-p180/bin/thin stop -c /Users/Michael/Desktop/myapp -P tmp/pids/thin.81.pid"

  if totalmem is greater than 150.0 MB for 2 cycles then restart
Run Code Online (Sandbox Code Playgroud)

如果我只是将其复制/粘贴start program到命令行(Monit之外),它就可以工作.同样适用stop program于之后停止Thin实例.然而,通过Monit运行它似乎不起作用.

-v详细模式运行它会产生以下结果:

monit: pidfile '/Users/Michael/Desktop/myapp/tmp/pids/thin.81.pid' does not exist
Run Code Online (Sandbox Code Playgroud)

这让我相信Thin永远不会初始化.Monit可以运行root吗?因为如果它确实那么它显然不会安装正确的gems,因为我使用RVM而不是"系统"Ruby.我目前在OSX上(但最终将部署到Linux) - 有谁知道这可能是什么原因?如果Monit是通过root运行的,我怎么能让它使用RVM呢?或者我可以告诉Monit执行启动/停止程序Michael:staff(我假设它将在OSX上?)

任何帮助深表感谢!

ruby thin monit rvm

7
推荐指数
2
解决办法
2638
查看次数

RSync单个(存档)文件,每次都会更改

我正在开发一个开源备份实用程序,它可以备份文件并通过FTP/SFTP/SCP协议将它们传输到各种外部位置,如Amazon S3,Rackspace Cloud Files,Dropbox和远程服务器.

现在,我收到了进行增量备份的功能请求(如果所做的备份很大并且转移和存储成本很高).我一直在环顾四周,有人提到了这个rsync实用程序.我对此进行了一些测试,但我不确定这是否合适,所以希望听到任何有经验的人rsync.

让我简要介绍一下备份时会发生什么.基本上它会开始转储MySQL,PostgreSQL,MongoDB,Redis等数据库.它可能需要文件系统中的一些常规文件(如图像).一旦一切就绪,它将把它们全部捆绑在一个.tar中(另外它将使用gzip和压缩和加密openssl).

完成所有操作后,我们会看到一个如下所示的文件:
mybackup.tar.gz.enc

现在我想将此文件传输到远程位置.目标是降低带宽和存储成本.因此,我们假设这个小备份包1GB大小不一.因此我们使用它将rsync其传输到远程位置并在本地删除文件备份.明天会生成一个新的备份文件,结果是在过去24小时内添加了更多的数据,我们构建了一个新mybackup.tar.gz.enc文件,看起来我们的1.2GB规模已经达到了.

现在,我的问题是:是否可以仅转移200MB过去24小时内添加的内容?我尝试了以下命令:

rsync -vhP --append mybackup.tar.gz.enc backups/mybackup.tar.gz.enc

结果:

mybackup.tar.gz.enc 1.20G 100%36.69MB/s 0:00:46(xfer#1,to-check = 0/1)

发送200.01M字节
接收849.40K字节
8.14M字节/秒
总大小为1.20G
加速为2.01

看看sent 200.01M bytes我会说数据的"附加"工作正常.我现在想知道的是它是否转移了整体1.2GB以便计算出现有备份的附加量和附加量,还是真的只转移了200MB?因为如果它转移了整体,1.2GB那么我看不出它与scp在单个大文件上使用该实用程序有多大不同.

另外,如果我想要完成的是什么,你建议用什么标志?如果不可能rsync,您可以建议使用任何实用程序吗?

任何反馈都非常感谢!

backup rsync remote-server space-efficiency single-file

6
推荐指数
2
解决办法
5816
查看次数