[EGIT] [PATCH 0/2] Make sure to setup a clone the same as git-clone does

7 messages, 2 authors, 2016-06-15 · open the first message on its own page

[EGIT] [PATCH 0/2] Make sure to setup a clone the same as git-clone does

From: <hidden>
Date: 2016-06-15 22:46:15

From: Ferry Huberts <redacted>

Currently the plugin does not setup core.bare=false and also does not setup
the default (pull) remote branch for master, two things that git-clone does
do.

The first ommision is not a problem, but seconds is. When using git-clone
it by default sets up the master to pull from the remote master.

This patch series fixes both issues and makes the plugin setup a cloned
repository exactly the same as git-clone.

Ferry Huberts (2):
  Make sure to set core.bare to false when cloning
  Make sure to set up the default (pull) remote branch for master

 .../org/spearce/egit/core/op/CloneOperation.java   |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

[EGIT] [PATCH 2/2] Make sure to set up the default (pull) remote branch for master

From: <hidden>
Date: 2016-06-15 22:46:15

From: Ferry Huberts <redacted>

This is to make sure that the git plugin sets up a clone
in the same fashion as the CLI git clone command.

Signed-off-by: Ferry Huberts <redacted>
---
 .../org/spearce/egit/core/op/CloneOperation.java   |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/org.spearce.egit.core/src/org/spearce/egit/core/op/CloneOperation.java b/org.spearce.egit.core/src/org/spearce/egit/core/op/CloneOperation.java
index f9ff6a3..ad786cb 100644
--- a/org.spearce.egit.core/src/org/spearce/egit/core/op/CloneOperation.java
+++ b/org.spearce.egit.core/src/org/spearce/egit/core/op/CloneOperation.java
@@ -32,6 +32,7 @@
 import org.spearce.jgit.lib.Ref;
 import org.spearce.jgit.lib.RefUpdate;
 import org.spearce.jgit.lib.Repository;
+import org.spearce.jgit.lib.RepositoryConfig;
 import org.spearce.jgit.lib.Tree;
 import org.spearce.jgit.lib.WorkDirCheckout;
 import org.spearce.jgit.transport.FetchResult;
@@ -158,6 +159,11 @@ private void doInit(final IProgressMonitor monitor)
 		local.getConfig().setBoolean("core", null, "bare", false);
 		
 		remoteConfig.update(local.getConfig());
+
+		/* setup the default (pull) remote branch for master */
+		local.getConfig().setString(RepositoryConfig.BRANCH_SECTION, Constants.MASTER, "remote", remoteName);
+		local.getConfig().setString(RepositoryConfig.BRANCH_SECTION, Constants.MASTER, "merge", Constants.R_HEADS + Constants.MASTER);
+
 		local.getConfig().save();
 	}
 
-- 
1.6.0.6

[EGIT] [PATCH 1/2] Make sure to set core.bare to false when cloning

From: <hidden>
Date: 2016-06-15 22:46:15

From: Ferry Huberts <redacted>

This is to make sure that the git plugin sets up a clone
in the same fashion as the CLI git clone command.

Signed-off-by: Ferry Huberts <redacted>
---
 .../org/spearce/egit/core/op/CloneOperation.java   |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/org.spearce.egit.core/src/org/spearce/egit/core/op/CloneOperation.java b/org.spearce.egit.core/src/org/spearce/egit/core/op/CloneOperation.java
index 145c50b..f9ff6a3 100644
--- a/org.spearce.egit.core/src/org/spearce/egit/core/op/CloneOperation.java
+++ b/org.spearce.egit.core/src/org/spearce/egit/core/op/CloneOperation.java
@@ -154,6 +154,9 @@ private void doInit(final IProgressMonitor monitor)
 					remoteConfig.addFetchRefSpec(wcrs.expandFromSource(ref));
 		}
 
+		/* we're setting up for a clone with a checkout */
+		local.getConfig().setBoolean("core", null, "bare", false);
+		
 		remoteConfig.update(local.getConfig());
 		local.getConfig().save();
 	}
-- 
1.6.0.6

Re: [EGIT] [PATCH 1/2] Make sure to set core.bare to false when cloning

From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:46:16

ferry.huberts@pelagic.nl wrote:
From: Ferry Huberts <redacted>

This is to make sure that the git plugin sets up a clone
in the same fashion as the CLI git clone command.

Signed-off-by: Ferry Huberts <redacted>
Thanks.  "jgit clone" also needed this added.  I did that in
a small followup patch.

Really though we need to fix the abstraction of Repository so there's
a notion of a bare repository, and a repository+worktree.  And that
abstraction should then set the core.bare property accordingly
when creating a new repository (or new repository+worktree).
Unfortunately that hasn't happened yet...
+		/* we're setting up for a clone with a checkout */
+		local.getConfig().setBoolean("core", null, "bare", false);
+		
-- 
Shawn.

Re: [EGIT] [PATCH 2/2] Make sure to set up the default (pull) remote branch for master

From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:46:16

ferry.huberts@pelagic.nl wrote:
This is to make sure that the git plugin sets up a clone
in the same fashion as the CLI git clone command.
...
quoted hunk
@@ -158,6 +159,11 @@ private void doInit(final IProgressMonitor monitor)
 		local.getConfig().setBoolean("core", null, "bare", false);
 		
 		remoteConfig.update(local.getConfig());
+
+		/* setup the default (pull) remote branch for master */
+		local.getConfig().setString(RepositoryConfig.BRANCH_SECTION, Constants.MASTER, "remote", remoteName);
+		local.getConfig().setString(RepositoryConfig.BRANCH_SECTION, Constants.MASTER, "merge", Constants.R_HEADS + Constants.MASTER);
Shouldn't this be "branch" and not "Constants.MASTER" ?

IIRC the dialog lets you start off a branch that isn't "master",
especially if the remote repository has no branch named "master"
but has something else that HEAD points at.  "git clone" would
setup this branch.${branch}.merge to point at what the upstream
branch calls itself.

-- 
Shawn.

Re: [EGIT] [PATCH 2/2] Make sure to set up the default (pull) remote branch for master

From: Ferry Huberts (Pelagic) <hidden>
Date: 2016-06-15 22:46:16

Shawn O. Pearce wrote:
ferry.huberts@pelagic.nl wrote:
quoted
This is to make sure that the git plugin sets up a clone
in the same fashion as the CLI git clone command.
...
quoted
@@ -158,6 +159,11 @@ private void doInit(final IProgressMonitor monitor)
 		local.getConfig().setBoolean("core", null, "bare", false);
 		
 		remoteConfig.update(local.getConfig());
+
+		/* setup the default (pull) remote branch for master */
+		local.getConfig().setString(RepositoryConfig.BRANCH_SECTION, Constants.MASTER, "remote", remoteName);
+		local.getConfig().setString(RepositoryConfig.BRANCH_SECTION, Constants.MASTER, "merge", Constants.R_HEADS + Constants.MASTER);
Shouldn't this be "branch" and not "Constants.MASTER" ?

IIRC the dialog lets you start off a branch that isn't "master",
especially if the remote repository has no branch named "master"
but has something else that HEAD points at.  "git clone" would
setup this branch.${branch}.merge to point at what the upstream
branch calls itself.
yep. missed that. want a new patch? afaic you can patch that up yourself :-)

Ferry

Re: [EGIT] [PATCH 2/2] Make sure to set up the default (pull) remote branch for master

From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:46:16

"Ferry Huberts (Pelagic)" [off-list ref] wrote:
Shawn O. Pearce wrote:
quoted
Shouldn't this be "branch" and not "Constants.MASTER" ?
yep. missed that. want a new patch? afaic you can patch that up yourself :-)
Yes, new patch.  Its a large rewrite of what you had otherwise
submitted.  Much easier on the maintainers if we don't have to
do such things... plus the attribution is more correct, its you
that did the rewrite, not us.  :)

-- 
Shawn.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help