Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
github
hub
提交
da534515
H
hub
项目概览
github
/
hub
大约 1 年 前同步成功
通知
3
Star
22523
Fork
2406
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hub
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
da534515
编写于
3月 05, 2014
作者:
J
Jingwen Owen Ou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move PushTarget to Branch
上级
d1674543
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
37 addition
and
29 deletion
+37
-29
github/branch.go
github/branch.go
+26
-3
github/branch_test.go
github/branch_test.go
+6
-6
github/localrepo.go
github/localrepo.go
+5
-20
未找到文件。
github/branch.go
浏览文件 @
da534515
...
...
@@ -9,6 +9,7 @@ import (
)
type
Branch
struct
{
Repo
*
GitHubRepo
Name
string
}
...
...
@@ -22,6 +23,29 @@ func (b *Branch) LongName() string {
return
reg
.
ReplaceAllString
(
b
.
Name
,
""
)
}
func
(
b
*
Branch
)
PushTarget
(
owner
string
)
(
branch
*
Branch
)
{
var
err
error
pushDefault
,
_
:=
git
.
Config
(
"push.default"
)
if
pushDefault
==
"upstream"
||
pushDefault
==
"tracking"
{
branch
,
err
=
b
.
Upstream
()
if
err
!=
nil
{
return
}
}
else
{
shortName
:=
b
.
ShortName
()
remotes
:=
b
.
Repo
.
remotesForPublish
(
owner
)
for
_
,
remote
:=
range
remotes
{
if
git
.
HasFile
(
"refs"
,
"remotes"
,
remote
.
Name
,
shortName
)
{
name
:=
fmt
.
Sprintf
(
"refs/remotes/%s/%s"
,
remote
.
Name
,
shortName
)
branch
=
&
Branch
{
b
.
Repo
,
name
}
break
}
}
}
return
}
func
(
b
*
Branch
)
RemoteName
()
string
{
reg
:=
regexp
.
MustCompile
(
"^refs/remotes/([^/]+)"
)
if
reg
.
MatchString
(
b
.
Name
)
{
...
...
@@ -37,14 +61,13 @@ func (b *Branch) Upstream() (u *Branch, err error) {
return
}
u
=
&
Branch
{
name
}
u
=
&
Branch
{
b
.
Repo
,
name
}
return
}
func
(
b
*
Branch
)
IsMaster
()
bool
{
localRepo
:=
LocalRepo
()
masterName
:=
localRepo
.
MasterBranch
()
.
ShortName
()
masterName
:=
b
.
Repo
.
MasterBranch
()
.
ShortName
()
return
b
.
ShortName
()
==
masterName
}
...
...
github/branch_test.go
浏览文件 @
da534515
...
...
@@ -6,27 +6,27 @@ import (
)
func
TestBranch_ShortName
(
t
*
testing
.
T
)
{
b
:=
Branch
{
"refs/heads/master"
}
b
:=
Branch
{
LocalRepo
(),
"refs/heads/master"
}
assert
.
Equal
(
t
,
"master"
,
b
.
ShortName
())
}
func
TestBranch_LongName
(
t
*
testing
.
T
)
{
b
:=
Branch
{
"refs/heads/master"
}
b
:=
Branch
{
LocalRepo
(),
"refs/heads/master"
}
assert
.
Equal
(
t
,
"heads/master"
,
b
.
LongName
())
b
=
Branch
{
"refs/remotes/origin/master"
}
b
=
Branch
{
LocalRepo
(),
"refs/remotes/origin/master"
}
assert
.
Equal
(
t
,
"origin/master"
,
b
.
LongName
())
}
func
TestBranch_RemoteName
(
t
*
testing
.
T
)
{
b
:=
Branch
{
"refs/remotes/origin/master"
}
b
:=
Branch
{
LocalRepo
(),
"refs/remotes/origin/master"
}
assert
.
Equal
(
t
,
"origin"
,
b
.
RemoteName
())
b
=
Branch
{
"refs/head/master"
}
b
=
Branch
{
LocalRepo
(),
"refs/head/master"
}
assert
.
Equal
(
t
,
""
,
b
.
RemoteName
())
}
func
TestBranch_IsRemote
(
t
*
testing
.
T
)
{
b
:=
Branch
{
"refs/remotes/origin/master"
}
b
:=
Branch
{
LocalRepo
(),
"refs/remotes/origin/master"
}
assert
.
T
(
t
,
b
.
IsRemote
())
}
github/localrepo.go
浏览文件 @
da534515
...
...
@@ -2,6 +2,7 @@ package github
import
(
"fmt"
"github.com/github/hub/git"
)
...
...
@@ -76,7 +77,7 @@ func (r *GitHubRepo) CurrentBranch() (branch *Branch, err error) {
return
}
branch
=
&
Branch
{
head
}
branch
=
&
Branch
{
r
,
head
}
return
}
...
...
@@ -91,7 +92,7 @@ func (r *GitHubRepo) MasterBranch() (branch *Branch) {
name
=
"refs/heads/master"
}
branch
=
&
Branch
{
name
}
branch
=
&
Branch
{
r
,
name
}
return
}
...
...
@@ -107,25 +108,9 @@ func (r *GitHubRepo) RemoteBranchAndProject(owner string) (branch *Branch, proje
return
}
pushDefault
,
_
:=
git
.
Config
(
"push.default"
)
if
pushDefault
==
"upstream"
||
pushDefault
==
"tracking"
{
branch
,
err
=
branch
.
Upstream
()
if
err
!=
nil
{
return
}
}
else
{
shortName
:=
branch
.
ShortName
()
remotes
:=
r
.
remotesForPublish
(
owner
)
for
_
,
remote
:=
range
remotes
{
if
git
.
HasFile
(
"refs"
,
"remotes"
,
remote
.
Name
,
shortName
)
{
name
:=
fmt
.
Sprintf
(
"refs/remotes/%s/%s"
,
remote
.
Name
,
shortName
)
branch
=
&
Branch
{
name
}
break
}
}
}
branch
=
branch
.
PushTarget
(
owner
)
if
branch
.
IsRemote
()
{
if
branch
!=
nil
&&
branch
.
IsRemote
()
{
remote
,
e
:=
r
.
RemoteByName
(
branch
.
RemoteName
())
if
e
==
nil
{
project
,
err
=
remote
.
Project
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录