* [PATCH] remote-bzr: reuse bzrlib transports when possible
@ 2013-09-07 23:58 Richard Hansen
2013-09-08 0:02 ` Richard Hansen
2013-09-08 0:27 ` [PATCH] " Felipe Contreras
0 siblings, 2 replies; 10+ messages in thread
From: Richard Hansen @ 2013-09-07 23:58 UTC (permalink / raw)
To: git, gitster, felipe.contreras; +Cc: Richard Hansen
Pass a list of open bzrlib.transport.Transport objects to each bzrlib
function that might create a transport. This enables bzrlib to reuse
existing transports when possible, avoiding multiple concurrent
connections to the same remote server.
If the remote server is accessed via ssh, this fixes a couple of
problems:
* If the user does not have keys loaded into an ssh agent, the user
may be prompted for a password multiple times.
* If the user is using OpenSSH and the ControlMaster setting is set
to auto, git-remote-bzr might hang. This is because bzrlib closes
the multiple ssh sessions in an undefined order and might try to
close the master ssh session before the other sessions. The
master ssh process will not exit until the other sessions have
exited, causing a deadlock. (The ssh sessions are closed in an
undefined order because bzrlib relies on the Python garbage
collector to trigger ssh session termination.)
---
contrib/remote-helpers/git-remote-bzr | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr
index c3a3cac..1e0044b 100755
--- a/contrib/remote-helpers/git-remote-bzr
+++ b/contrib/remote-helpers/git-remote-bzr
@@ -674,7 +674,7 @@ def parse_reset(parser):
parsed_refs[ref] = mark_to_rev(from_mark)
def do_export(parser):
- global parsed_refs, dirname
+ global parsed_refs, dirname, transports
parser.next()
@@ -699,7 +699,8 @@ def do_export(parser):
branch.generate_revision_history(revid, marks.get_tip(name))
if name in peers:
- peer = bzrlib.branch.Branch.open(peers[name])
+ peer = bzrlib.branch.Branch.open(peers[name],
+ possible_transports=transports)
try:
peer.bzrdir.push_branch(branch, revision_id=revid)
except bzrlib.errors.DivergedBranches:
@@ -769,25 +770,28 @@ def do_list(parser):
print
def clone(path, remote_branch):
+ global transports
try:
- bdir = bzrlib.bzrdir.BzrDir.create(path)
+ bdir = bzrlib.bzrdir.BzrDir.create(path, possible_transports=transports)
except bzrlib.errors.AlreadyControlDirError:
- bdir = bzrlib.bzrdir.BzrDir.open(path)
+ bdir = bzrlib.bzrdir.BzrDir.open(path, possible_transports=transports)
repo = bdir.find_repository()
repo.fetch(remote_branch.repository)
return remote_branch.sprout(bdir, repository=repo)
def get_remote_branch(name):
- global dirname, branches
+ global dirname, branches, transports
- remote_branch = bzrlib.branch.Branch.open(branches[name])
+ remote_branch = bzrlib.branch.Branch.open(branches[name],
+ possible_transports=transports)
if isinstance(remote_branch.user_transport, bzrlib.transport.local.LocalTransport):
return remote_branch
branch_path = os.path.join(dirname, 'clone', name)
try:
- branch = bzrlib.branch.Branch.open(branch_path)
+ branch = bzrlib.branch.Branch.open(branch_path,
+ possible_transports=transports)
except bzrlib.errors.NotBranchError:
# clone
branch = clone(branch_path, remote_branch)
@@ -821,17 +825,19 @@ def find_branches(repo):
yield name, branch.base
def get_repo(url, alias):
- global dirname, peer, branches
+ global dirname, peer, branches, transports
normal_url = bzrlib.urlutils.normalize_url(url)
- origin = bzrlib.bzrdir.BzrDir.open(url)
+ origin = bzrlib.bzrdir.BzrDir.open(url, possible_transports=transports)
is_local = isinstance(origin.transport, bzrlib.transport.local.LocalTransport)
shared_path = os.path.join(gitdir, 'bzr')
try:
- shared_dir = bzrlib.bzrdir.BzrDir.open(shared_path)
+ shared_dir = bzrlib.bzrdir.BzrDir.open(shared_path,
+ possible_transports=transports)
except bzrlib.errors.NotBranchError:
- shared_dir = bzrlib.bzrdir.BzrDir.create(shared_path)
+ shared_dir = bzrlib.bzrdir.BzrDir.create(shared_path,
+ possible_transports=transports)
try:
shared_repo = shared_dir.open_repository()
except bzrlib.errors.NoRepositoryPresent:
@@ -844,7 +850,8 @@ def get_repo(url, alias):
else:
# check and remove old organization
try:
- bdir = bzrlib.bzrdir.BzrDir.open(clone_path)
+ bdir = bzrlib.bzrdir.BzrDir.open(clone_path,
+ possible_transports=transports)
bdir.destroy_repository()
except bzrlib.errors.NotBranchError:
pass
@@ -897,6 +904,7 @@ def main(args):
global files_cache
global is_tmp
global branches, peers
+ global transports
alias = args[1]
url = args[2]
@@ -909,6 +917,7 @@ def main(args):
marks = None
branches = {}
peers = {}
+ transports = []
if alias[5:] == url:
is_tmp = True
--
1.8.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] remote-bzr: reuse bzrlib transports when possible
2013-09-07 23:58 [PATCH] remote-bzr: reuse bzrlib transports when possible Richard Hansen
@ 2013-09-08 0:02 ` Richard Hansen
2013-09-08 0:30 ` Felipe Contreras
2013-09-08 0:27 ` [PATCH] " Felipe Contreras
1 sibling, 1 reply; 10+ messages in thread
From: Richard Hansen @ 2013-09-08 0:02 UTC (permalink / raw)
To: git; +Cc: gitster, felipe.contreras
On 2013-09-07 19:58, Richard Hansen wrote:
> Pass a list of open bzrlib.transport.Transport objects to each bzrlib
> function that might create a transport. This enables bzrlib to reuse
> existing transports when possible, avoiding multiple concurrent
> connections to the same remote server.
>
> If the remote server is accessed via ssh, this fixes a couple of
> problems:
> * If the user does not have keys loaded into an ssh agent, the user
> may be prompted for a password multiple times.
> * If the user is using OpenSSH and the ControlMaster setting is set
> to auto, git-remote-bzr might hang. This is because bzrlib closes
> the multiple ssh sessions in an undefined order and might try to
> close the master ssh session before the other sessions. The
> master ssh process will not exit until the other sessions have
> exited, causing a deadlock. (The ssh sessions are closed in an
> undefined order because bzrlib relies on the Python garbage
> collector to trigger ssh session termination.)
I forgot to mention: I didn't add a Signed-off-by line because there is
no mention of a copyright license at the top of git-remote-bzr.
-Richard
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] remote-bzr: reuse bzrlib transports when possible
2013-09-07 23:58 [PATCH] remote-bzr: reuse bzrlib transports when possible Richard Hansen
2013-09-08 0:02 ` Richard Hansen
@ 2013-09-08 0:27 ` Felipe Contreras
1 sibling, 0 replies; 10+ messages in thread
From: Felipe Contreras @ 2013-09-08 0:27 UTC (permalink / raw)
To: Richard Hansen; +Cc: git, Junio C Hamano
On Sat, Sep 7, 2013 at 6:58 PM, Richard Hansen <rhansen@bbn.com> wrote:
> Pass a list of open bzrlib.transport.Transport objects to each bzrlib
> function that might create a transport. This enables bzrlib to reuse
> existing transports when possible, avoiding multiple concurrent
> connections to the same remote server.
>
> If the remote server is accessed via ssh, this fixes a couple of
> problems:
> * If the user does not have keys loaded into an ssh agent, the user
> may be prompted for a password multiple times.
> * If the user is using OpenSSH and the ControlMaster setting is set
> to auto, git-remote-bzr might hang. This is because bzrlib closes
> the multiple ssh sessions in an undefined order and might try to
> close the master ssh session before the other sessions. The
> master ssh process will not exit until the other sessions have
> exited, causing a deadlock. (The ssh sessions are closed in an
> undefined order because bzrlib relies on the Python garbage
> collector to trigger ssh session termination.)
Looks good to me. I'll apply in my personal repository.
--
Felipe Contreras
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] remote-bzr: reuse bzrlib transports when possible
2013-09-08 0:02 ` Richard Hansen
@ 2013-09-08 0:30 ` Felipe Contreras
2013-09-08 5:30 ` Richard Hansen
0 siblings, 1 reply; 10+ messages in thread
From: Felipe Contreras @ 2013-09-08 0:30 UTC (permalink / raw)
To: Richard Hansen; +Cc: git, Junio C Hamano
On Sat, Sep 7, 2013 at 7:02 PM, Richard Hansen <rhansen@bbn.com> wrote:
> On 2013-09-07 19:58, Richard Hansen wrote:
>> Pass a list of open bzrlib.transport.Transport objects to each bzrlib
>> function that might create a transport. This enables bzrlib to reuse
>> existing transports when possible, avoiding multiple concurrent
>> connections to the same remote server.
>>
>> If the remote server is accessed via ssh, this fixes a couple of
>> problems:
>> * If the user does not have keys loaded into an ssh agent, the user
>> may be prompted for a password multiple times.
>> * If the user is using OpenSSH and the ControlMaster setting is set
>> to auto, git-remote-bzr might hang. This is because bzrlib closes
>> the multiple ssh sessions in an undefined order and might try to
>> close the master ssh session before the other sessions. The
>> master ssh process will not exit until the other sessions have
>> exited, causing a deadlock. (The ssh sessions are closed in an
>> undefined order because bzrlib relies on the Python garbage
>> collector to trigger ssh session termination.)
>
> I forgot to mention: I didn't add a Signed-off-by line because there is
> no mention of a copyright license at the top of git-remote-bzr.
And why is that relevant? A signed-off-by line means you wrote the
code and you are fine with the patch being applied, or you are
responsible somehow.
--
Felipe Contreras
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] remote-bzr: reuse bzrlib transports when possible
2013-09-08 0:30 ` Felipe Contreras
@ 2013-09-08 5:30 ` Richard Hansen
2013-09-08 5:47 ` [PATCH v2] " Richard Hansen
0 siblings, 1 reply; 10+ messages in thread
From: Richard Hansen @ 2013-09-08 5:30 UTC (permalink / raw)
To: Felipe Contreras; +Cc: git, Junio C Hamano
On 2013-09-07 20:30, Felipe Contreras wrote:
> On Sat, Sep 7, 2013 at 7:02 PM, Richard Hansen <rhansen@bbn.com> wrote:
>> On 2013-09-07 19:58, Richard Hansen wrote:
>>> Pass a list of open bzrlib.transport.Transport objects to each bzrlib
>>> function that might create a transport. This enables bzrlib to reuse
>>> existing transports when possible, avoiding multiple concurrent
>>> connections to the same remote server.
>>>
>>> If the remote server is accessed via ssh, this fixes a couple of
>>> problems:
>>> * If the user does not have keys loaded into an ssh agent, the user
>>> may be prompted for a password multiple times.
>>> * If the user is using OpenSSH and the ControlMaster setting is set
>>> to auto, git-remote-bzr might hang. This is because bzrlib closes
>>> the multiple ssh sessions in an undefined order and might try to
>>> close the master ssh session before the other sessions. The
>>> master ssh process will not exit until the other sessions have
>>> exited, causing a deadlock. (The ssh sessions are closed in an
>>> undefined order because bzrlib relies on the Python garbage
>>> collector to trigger ssh session termination.)
>>
>> I forgot to mention: I didn't add a Signed-off-by line because there is
>> no mention of a copyright license at the top of git-remote-bzr.
>
> And why is that relevant? A signed-off-by line means you wrote the
> code and you are fine with the patch being applied, or you are
> responsible somehow.
The "Developer's Certificate of Origin 1.1" in
Documentation/SubmittingPatches refers to "the open source license
indicated in the file", but there is no such indication.
However, it looks like most of the files in the repository don't
indicate which license applies. So I guess the license in the COPYING
file (GPLv2) applies by default? I'll re-send with the Signed-off-by
line.
Perhaps SubmittingPatches should be updated to clarify what happens if
the file doesn't indicate which license applies to the file (see
example below).
-Richard
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 7055576..c5ff744 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -227,13 +227,15 @@ the patch, which certifies that you wrote it or otherwise have
the right to pass it on as a open-source patch. The rules are
pretty simple: if you can certify the below:
- Developer's Certificate of Origin 1.1
+ Developer's Certificate of Origin 1.2
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
- indicated in the file; or
+ indicated in the file (or, if no license is indicated in
+ the file, the license in COPYING that accompanies the
+ file); or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
@@ -241,7 +243,8 @@ pretty simple: if you can certify the below:
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
- in the file; or
+ in the file (or, if no license is indicated in the file,
+ the license in COPYING that accompanies the file); or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2] remote-bzr: reuse bzrlib transports when possible
2013-09-08 5:30 ` Richard Hansen
@ 2013-09-08 5:47 ` Richard Hansen
2013-09-09 17:55 ` Junio C Hamano
0 siblings, 1 reply; 10+ messages in thread
From: Richard Hansen @ 2013-09-08 5:47 UTC (permalink / raw)
To: git, gitster, felipe.contreras; +Cc: Richard Hansen
Pass a list of open bzrlib.transport.Transport objects to each bzrlib
function that might create a transport. This enables bzrlib to reuse
existing transports when possible, avoiding multiple concurrent
connections to the same remote server.
If the remote server is accessed via ssh, this fixes a couple of
problems:
* If the user does not have keys loaded into an ssh agent, the user
may be prompted for a password multiple times.
* If the user is using OpenSSH and the ControlMaster setting is set
to auto, git-remote-bzr might hang. This is because bzrlib closes
the multiple ssh sessions in an undefined order and might try to
close the master ssh session before the other sessions. The
master ssh process will not exit until the other sessions have
exited, causing a deadlock. (The ssh sessions are closed in an
undefined order because bzrlib relies on the Python garbage
collector to trigger ssh session termination.)
Signed-off-by: Richard Hansen <rhansen@bbn.com>
---
Changes from v1:
* add Signed-off-by line
contrib/remote-helpers/git-remote-bzr | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr
index c3a3cac..1e0044b 100755
--- a/contrib/remote-helpers/git-remote-bzr
+++ b/contrib/remote-helpers/git-remote-bzr
@@ -674,7 +674,7 @@ def parse_reset(parser):
parsed_refs[ref] = mark_to_rev(from_mark)
def do_export(parser):
- global parsed_refs, dirname
+ global parsed_refs, dirname, transports
parser.next()
@@ -699,7 +699,8 @@ def do_export(parser):
branch.generate_revision_history(revid, marks.get_tip(name))
if name in peers:
- peer = bzrlib.branch.Branch.open(peers[name])
+ peer = bzrlib.branch.Branch.open(peers[name],
+ possible_transports=transports)
try:
peer.bzrdir.push_branch(branch, revision_id=revid)
except bzrlib.errors.DivergedBranches:
@@ -769,25 +770,28 @@ def do_list(parser):
print
def clone(path, remote_branch):
+ global transports
try:
- bdir = bzrlib.bzrdir.BzrDir.create(path)
+ bdir = bzrlib.bzrdir.BzrDir.create(path, possible_transports=transports)
except bzrlib.errors.AlreadyControlDirError:
- bdir = bzrlib.bzrdir.BzrDir.open(path)
+ bdir = bzrlib.bzrdir.BzrDir.open(path, possible_transports=transports)
repo = bdir.find_repository()
repo.fetch(remote_branch.repository)
return remote_branch.sprout(bdir, repository=repo)
def get_remote_branch(name):
- global dirname, branches
+ global dirname, branches, transports
- remote_branch = bzrlib.branch.Branch.open(branches[name])
+ remote_branch = bzrlib.branch.Branch.open(branches[name],
+ possible_transports=transports)
if isinstance(remote_branch.user_transport, bzrlib.transport.local.LocalTransport):
return remote_branch
branch_path = os.path.join(dirname, 'clone', name)
try:
- branch = bzrlib.branch.Branch.open(branch_path)
+ branch = bzrlib.branch.Branch.open(branch_path,
+ possible_transports=transports)
except bzrlib.errors.NotBranchError:
# clone
branch = clone(branch_path, remote_branch)
@@ -821,17 +825,19 @@ def find_branches(repo):
yield name, branch.base
def get_repo(url, alias):
- global dirname, peer, branches
+ global dirname, peer, branches, transports
normal_url = bzrlib.urlutils.normalize_url(url)
- origin = bzrlib.bzrdir.BzrDir.open(url)
+ origin = bzrlib.bzrdir.BzrDir.open(url, possible_transports=transports)
is_local = isinstance(origin.transport, bzrlib.transport.local.LocalTransport)
shared_path = os.path.join(gitdir, 'bzr')
try:
- shared_dir = bzrlib.bzrdir.BzrDir.open(shared_path)
+ shared_dir = bzrlib.bzrdir.BzrDir.open(shared_path,
+ possible_transports=transports)
except bzrlib.errors.NotBranchError:
- shared_dir = bzrlib.bzrdir.BzrDir.create(shared_path)
+ shared_dir = bzrlib.bzrdir.BzrDir.create(shared_path,
+ possible_transports=transports)
try:
shared_repo = shared_dir.open_repository()
except bzrlib.errors.NoRepositoryPresent:
@@ -844,7 +850,8 @@ def get_repo(url, alias):
else:
# check and remove old organization
try:
- bdir = bzrlib.bzrdir.BzrDir.open(clone_path)
+ bdir = bzrlib.bzrdir.BzrDir.open(clone_path,
+ possible_transports=transports)
bdir.destroy_repository()
except bzrlib.errors.NotBranchError:
pass
@@ -897,6 +904,7 @@ def main(args):
global files_cache
global is_tmp
global branches, peers
+ global transports
alias = args[1]
url = args[2]
@@ -909,6 +917,7 @@ def main(args):
marks = None
branches = {}
peers = {}
+ transports = []
if alias[5:] == url:
is_tmp = True
--
1.8.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2] remote-bzr: reuse bzrlib transports when possible
2013-09-08 5:47 ` [PATCH v2] " Richard Hansen
@ 2013-09-09 17:55 ` Junio C Hamano
2013-09-10 22:01 ` Junio C Hamano
0 siblings, 1 reply; 10+ messages in thread
From: Junio C Hamano @ 2013-09-09 17:55 UTC (permalink / raw)
To: Richard Hansen; +Cc: git, felipe.contreras
Richard Hansen <rhansen@bbn.com> writes:
> def do_export(parser):
> - global parsed_refs, dirname
> + global parsed_refs, dirname, transports
As this has been acked by Felipe who knows the script the best, I'll
apply this directly to 'master'.
These additions of "global transports" however have trivial
interactions with fc/contrib-bzr-hg-fixes topic Felipe posted
earlier, which I was planning to start merging down to 'next' and
then to 'master'. Most funcions merely use the variable without
assigning, so "global transports" can be removed, in line with the
spirit of 641a2b5b (remote-helpers: cleanup more global variables,
2013-08-28), except for the obvious initialisation in main(), I
think. Please double check the conflict resolution result in a
commit on 'pu' with
git show 'origin/pu^{/Merge fc/contrib-bzr}'
when I push the result out.
Thanks.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] remote-bzr: reuse bzrlib transports when possible
2013-09-09 17:55 ` Junio C Hamano
@ 2013-09-10 22:01 ` Junio C Hamano
2013-09-12 21:05 ` Richard Hansen
0 siblings, 1 reply; 10+ messages in thread
From: Junio C Hamano @ 2013-09-10 22:01 UTC (permalink / raw)
To: Richard Hansen; +Cc: git, felipe.contreras
Junio C Hamano <gitster@pobox.com> writes:
> Richard Hansen <rhansen@bbn.com> writes:
>
>> def do_export(parser):
>> - global parsed_refs, dirname
>> + global parsed_refs, dirname, transports
>
> As this has been acked by Felipe who knows the script the best, I'll
> apply this directly to 'master'.
>
> These additions of "global transports" however have trivial
> interactions with fc/contrib-bzr-hg-fixes topic Felipe posted
> earlier, which I was planning to start merging down to 'next' and
> then to 'master'. Most funcions merely use the variable without
> assigning, so "global transports" can be removed, in line with the
> spirit of 641a2b5b (remote-helpers: cleanup more global variables,
> 2013-08-28), except for the obvious initialisation in main(), I
> think. Please double check the conflict resolution result in a
> commit on 'pu' with
>
> git show 'origin/pu^{/Merge fc/contrib-bzr}'
>
> when I push the result out.
>
> Thanks.
Ping? I'd like to merge fc/contrib-bzr.hg-fixes topic to 'next'
(and fast track it to 'master' after that), and it would be helpful
to get an Ack on the conflict resolution I have.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] remote-bzr: reuse bzrlib transports when possible
2013-09-10 22:01 ` Junio C Hamano
@ 2013-09-12 21:05 ` Richard Hansen
2013-09-12 21:11 ` Junio C Hamano
0 siblings, 1 reply; 10+ messages in thread
From: Richard Hansen @ 2013-09-12 21:05 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, felipe.contreras
On 2013-09-10 18:01, Junio C Hamano wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Richard Hansen <rhansen@bbn.com> writes:
>>
>>> def do_export(parser):
>>> - global parsed_refs, dirname
>>> + global parsed_refs, dirname, transports
>>
>> As this has been acked by Felipe who knows the script the best, I'll
>> apply this directly to 'master'.
>>
>> These additions of "global transports" however have trivial
>> interactions with fc/contrib-bzr-hg-fixes topic Felipe posted
>> earlier, which I was planning to start merging down to 'next' and
>> then to 'master'. Most funcions merely use the variable without
>> assigning, so "global transports" can be removed, in line with the
>> spirit of 641a2b5b (remote-helpers: cleanup more global variables,
>> 2013-08-28), except for the obvious initialisation in main(), I
>> think. Please double check the conflict resolution result in a
>> commit on 'pu' with
>>
>> git show 'origin/pu^{/Merge fc/contrib-bzr}'
>>
>> when I push the result out.
>>
>> Thanks.
>
> Ping? I'd like to merge fc/contrib-bzr.hg-fixes topic to 'next'
> (and fast track it to 'master' after that), and it would be helpful
> to get an Ack on the conflict resolution I have.
Sorry for the delay.
Looks good to me, and the tests still pass.
-Richard
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] remote-bzr: reuse bzrlib transports when possible
2013-09-12 21:05 ` Richard Hansen
@ 2013-09-12 21:11 ` Junio C Hamano
0 siblings, 0 replies; 10+ messages in thread
From: Junio C Hamano @ 2013-09-12 21:11 UTC (permalink / raw)
To: Richard Hansen; +Cc: git, felipe.contreras
Richard Hansen <rhansen@bbn.com> writes:
>> Ping? I'd like to merge fc/contrib-bzr.hg-fixes topic to 'next'
>> (and fast track it to 'master' after that), and it would be helpful
>> to get an Ack on the conflict resolution I have.
>
> Sorry for the delay.
>
> Looks good to me, and the tests still pass.
Thanks.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-09-12 21:11 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-07 23:58 [PATCH] remote-bzr: reuse bzrlib transports when possible Richard Hansen
2013-09-08 0:02 ` Richard Hansen
2013-09-08 0:30 ` Felipe Contreras
2013-09-08 5:30 ` Richard Hansen
2013-09-08 5:47 ` [PATCH v2] " Richard Hansen
2013-09-09 17:55 ` Junio C Hamano
2013-09-10 22:01 ` Junio C Hamano
2013-09-12 21:05 ` Richard Hansen
2013-09-12 21:11 ` Junio C Hamano
2013-09-08 0:27 ` [PATCH] " Felipe Contreras
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.