我一直想知道是否有一种简单的方法来推送和拉出具有不同名称的远程分支的本地分支,而不必始终指定这两个名称.
例如:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Run Code Online (Sandbox Code Playgroud)
现在如果有人更新remote_branch_name,我可以:
$ git pull
Run Code Online (Sandbox Code Playgroud)
一切都是合并/快进的.但是,如果我在当地的"newb"中进行更改,我不能:
$ git push
Run Code Online (Sandbox Code Playgroud)
相反,我必须:
% git push origin newb:remote_branch_name
Run Code Online (Sandbox Code Playgroud)
看起来有点傻.如果git-pull用于git-config branch.newb.merge确定从何处拉出,为什么不能git-push有类似的配置选项?有没有一个很好的捷径,或者我应该继续漫长的路?
我们正在尝试建立一个基本的有向队列系统,其中生产者将生成多个任务,一个或多个消费者将一次获取任务,处理它并确认该消息.
问题是,处理可能需要10-20分钟,而我们当时没有响应消息,导致服务器断开连接.
这是我们的消费者的一些伪代码:
#!/usr/bin/env python
import pika
import time
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='task_queue', durable=True)
print ' [*] Waiting for messages. To exit press CTRL+C'
def callback(ch, method, properties, body):
long_running_task(connection)
ch.basic_ack(delivery_tag = method.delivery_tag)
channel.basic_qos(prefetch_count=1)
channel.basic_consume(callback,
queue='task_queue')
channel.start_consuming()
Run Code Online (Sandbox Code Playgroud)
第一个任务完成后,在BlockingConnection内部的某处抛出异常,抱怨套接字已重置.此外,RabbitMQ日志显示消费者因未及时响应而断开连接(为什么重置连接而不是发送FIN很奇怪,但我们不会担心这一点).
我们搜索了很多,因为我们认为这是RabbitMQ的正常使用案例(有许多长期运行的任务应该在许多消费者中分开),但似乎没有其他人真正有这个问题.最后,我们偶然发现了一个线程,建议使用心跳并long_running_task()在单独的线程中生成心跳.
所以代码变成了:
#!/usr/bin/env python
import pika
import time
import threading
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost',
heartbeat_interval=20))
channel = connection.channel()
channel.queue_declare(queue='task_queue', durable=True)
print ' [*] Waiting for messages. To exit press CTRL+C'
def thread_func(ch, method, body):
long_running_task(connection)
ch.basic_ack(delivery_tag …Run Code Online (Sandbox Code Playgroud) 在我的.vimrc,我希望能够检查,如果我一直在运行或者通过vim -R或view.如果是这样,我计划禁用或延迟某些插件加载,以加快我很快想要查看文件的时间.
:args并且argv()似乎只显示我想编辑哪些文件,而不是所有命令行标志.
检查if &readonly几乎工作.如果我有这个:
if &readonly
echo "read only"
else
echo "not read only"
endif
Run Code Online (Sandbox Code Playgroud)
接着,我会read only当我执行呼应view或vim -R,但如果我这样做要么view ~/.vimrc或vim -R ~/.vimrc然后我得到not read only.很奇怪.
谢谢!
我正在尝试构建一个Pyramid应用程序.我从SQLAlchemy脚手架开始.我遇到了一个问题,我想知道解决它的最佳方法是什么.在我的一个视图中,我需要从两个不相关的表中选择很多行.我需要确保在从第一个表中选择行和从第二个表中选择行的时间之间没有插入第二个表的行.
我有三个型号,Node,Test,和Tasking.双方Nodes并Tests有相当多的元数据.给定列表Nodes和Tests列表,Taskings可以创建全局列表.例如,我们可以有三个Nodes,a,b,和c两个Tests"我们需要一个节点都做任务P"和"我们需要两个节点做任务Q".
从这些信息中,Tasks应该创建三个.例如:
a应该做任务P"b应该做任务Q"c应该做任务Q"现在,我正在尝试为此提供REST API.绝大多数时间客户端都会请求列表Tasks,因此需要快速.但是,有时客户端可能会添加一个Node或一个Test.当发生这种情况时,我需要Tasks重新生成整个列表.
这是一个粗略的例子:
@view_config(route_name='list_taskings')
def list_taskings(request):
return DBSession.Query(Tasking).all()
@view_config(route_name='add_node')
def add_node(request):
DBSession.add(Node())
_update_taskings()
@view_config(route_name='add_test')
def add_test(request):
DBSession.add(Test())
_update_taskings()
def _update_taskings():
nodes = …Run Code Online (Sandbox Code Playgroud) git ×1
git-push ×1
git-remote ×1
pika ×1
pyramid ×1
python ×1
rabbitmq ×1
sqlalchemy ×1
transactions ×1
vim ×1