atlassian-stash 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0be0d6772ce793494d20df00f95ce16587ff5a9e
4
- data.tar.gz: 67ad7b07621a675f2992fdcf59fb52908b9eeba2
3
+ metadata.gz: 682bc271a57ab40dff60664829c0eb186b85f69c
4
+ data.tar.gz: 77065a5e776e9a090981dd406d67a315ad346888
5
5
  SHA512:
6
- metadata.gz: aab230757aa8b89aa4276ef30efdc1e978f97ff385eaf9d085e12ad1286c959900124fa1dc6e4537975a93d973db1308890d649803ed17591bd143682cf0f7cf
7
- data.tar.gz: 17ce45b32d675377acb3a01b8b628d0b06e142cdd26b7cb9a94614763245ef8cd3f2d827718d4fbf111c93601d437aba9d9cfca71863653bdd2b828213316042
6
+ metadata.gz: d78247c9ade2009da701d9703dde0264cf51928f3c75a3a14eb65760e35e1a43609672866d7151ff57ad3e741d8f296556fa23244131dfc28aa3ced118e052b0
7
+ data.tar.gz: c1d5600c4575f3099fc91e1ae108d172011c93aa2d680bd0348ece4f873e2698226407dc4f4475500f30a2d74aa5ea6f40822e1b43d6556b362218bf5f060a11
data/README.md CHANGED
@@ -13,7 +13,25 @@ $> gem install atlassian-stash
13
13
  Once the gem is installed, the command `stash` will be in your `$PATH`
14
14
 
15
15
  ## Configuration and usage
16
- Run `stash configure`. This will prompt for details about your Stash instance. If no password is provided, then you will be prompted for a password when executing commands to Stash. Currently, the password is stored in plain text in a configuration file, `~/.stashconfig.yml` which is protected with a permission bit of `0600`.
16
+ Run `stash configure`. This will prompt for details about your Stash instance. If no password is provided, then you will be prompted for a password when executing commands to Stash.
17
+
18
+ The global configuration file lives at `$HOME/.stashconfig.yml` and any options in a similarly named `.stashconfig.yml` file in the root of a git repository will take precedence.
19
+
20
+ ### Passwords
21
+ There are currently two ways to store your password in the configuration file. You may store it as plain text with the key `password`, for example:
22
+
23
+ ```
24
+ password: s3cre7
25
+ ```
26
+
27
+ Or you may store a command string with the `passwordeval` key which allows you to use any encrypted method you like in order to store your password. For example, if using gpg:
28
+
29
+ ```
30
+ passwordeval: gpg --no-tty --quiet --decrypt ~/.secret.gpg
31
+ ```
32
+
33
+ The `stash configure` utility will not prompt you for this. If you wish to use `passwordeval`, omit a password during the configuration and add it to `~/.stashconfig.yml` afterwards.
34
+
17
35
 
18
36
  ### Creating a pull request
19
37
  Use the `pull-request` command to create a pull request in Stash. For example:
@@ -56,6 +74,7 @@ Running `stash configure` will prepopulate `~/.stashconfig.yml` with a variety o
56
74
  username: seb # username to connect to stash server.
57
75
  password: s3cr3t # password for user. If ommitted, you will be prompted at the terminal when making a request to Stash
58
76
  stash_url: https://stash.server.com # fully qualified stash url
77
+ remote: upstream # Pull requests will be created in the Stash repository specified by this remote
59
78
  open: true # opens newly created pull requests in the browser
60
79
  ssl_no_verify: true # do not check ssl certificates for the configured stash server
61
80
  ```
@@ -111,4 +130,4 @@ version:write -- writes out an explicit version
111
130
 
112
131
  ```
113
132
  $> rake release
114
- ```
133
+ ```
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.5.0
data/bin/stash CHANGED
@@ -21,6 +21,11 @@ def load_config
21
21
  raise "No Stash configuration found; please run configure" unless File.exists? $configFile
22
22
  config = YAML.load_file($configFile)
23
23
  raise "Stash configuration file is incomplete, please re-run configure" unless config['username'] and config['stash_url']
24
+
25
+ if config['password'].nil? && !config['passwordeval'].nil?
26
+ config['password'] = `#{config['passwordeval']}`.strip
27
+ end
28
+
24
29
  config.merge! repo_config if repo_config
25
30
  config
26
31
  end
@@ -112,7 +117,6 @@ command 'pull-request' do |c|
112
117
  target = target['remotes/'.size..-1]
113
118
  end
114
119
 
115
- options.src_remote = options.remote
116
120
  if not is_branch?(source)
117
121
  if not is_branch?("remotes/" + source)
118
122
  raise "fatal: unrecogonized source branch"
@@ -120,7 +124,10 @@ command 'pull-request' do |c|
120
124
  # If a remote matches, split the remote out of the refspec
121
125
  options.src_remote = source.split('/')[0]
122
126
  source = source.split('/')[1..-1].join('/')
127
+ else
128
+ options.src_remote = Atlassian::Stash::Git.get_remote(source)
123
129
  end
130
+ options.src_remote = options.remote if options.src_remote.nil? || options.src_remote.empty?
124
131
 
125
132
  options.target_remote = options.remote
126
133
  if not is_branch?(target)
@@ -11,7 +11,7 @@ module Atlassian
11
11
  end
12
12
 
13
13
  def get_branches()
14
- all = %x{git branch -a}.gsub("*","").gsub(" ", "").split("\n")
14
+ all = %x{git branch --no-color -a}.gsub("*","").gsub(" ", "").split("\n")
15
15
  all.select{|x| not x.include? "->"}
16
16
  end
17
17
 
@@ -28,6 +28,12 @@ module Atlassian
28
28
  %x(git remote -v)
29
29
  end
30
30
 
31
+ def get_remote(branch = nil)
32
+ remote_branch = %x(git rev-parse --abbrev-ref --symbolic-full-name #{branch}@{u} 2>/dev/null)
33
+ remote = remote_branch.split('/').first
34
+ remote == "" ? nil : remote
35
+ end
36
+
31
37
  def get_remote_url(remote=nil)
32
38
  remotes = get_remotes
33
39
  return nil if remotes.empty?
@@ -136,7 +136,7 @@ module Atlassian
136
136
  end
137
137
 
138
138
  def git_commit_messages
139
- @commit_messages ||= `git log --reverse --format=%s #{@target_ref}..#{@source_ref}`
139
+ @commit_messages ||= `git log --no-color --reverse --format=%s #{@target_ref}..#{@source_ref}`
140
140
  end
141
141
 
142
142
  def parse_proxy(conf)
@@ -52,11 +52,11 @@ module Atlassian
52
52
  end
53
53
  end
54
54
 
55
- if m = remoteUrl.match(/\/([a-zA-Z~][a-zA-Z0-9_\-]*)\/([[:alnum:]][\w\-\.]*).git$/)
55
+ if m = remoteUrl.match(/[\/:]([a-zA-Z~][a-zA-Z0-9_\-]*)\/([[:alnum:]][\w\-\.]*).git$/)
56
56
  return RepoInfo.new(config, m[1], m[2])
57
57
  end
58
58
  raise "Repository does not seem to be hosted in Stash; Remote url: " + remoteUrl
59
59
  end
60
60
  end
61
61
  end
62
- end
62
+ end
@@ -79,16 +79,16 @@ class TestGit < Minitest::Test
79
79
  end
80
80
 
81
81
  should "branches are matched" do
82
- Atlassian::Stash::Git.stubs(:get_branches).returns(
83
- " feature
84
- temp
85
- * master
86
- remotes/origin/master
87
- remotes/origin/release/v1.0
88
- remotes/origin/feature/awesome
89
- remotes/upstream/master
90
- remotes/upstream/release/v1.0
91
- remotes/upstream/feature/Issue7")
82
+ Atlassian::Stash::Git.stubs(:get_branches).returns([
83
+ "feature",
84
+ "temp",
85
+ "master",
86
+ "remotes/origin/master",
87
+ "remotes/origin/release/v1.0",
88
+ "remotes/origin/feature/awesome",
89
+ "remotes/upstream/master",
90
+ "remotes/upstream/release/v1.0",
91
+ "remotes/upstream/feature/Issue7"])
92
92
  assert_equal true, Atlassian::Stash::Git.is_branch?('master')
93
93
  assert_equal true, Atlassian::Stash::Git.is_branch?('remotes/upstream/master')
94
94
  end
@@ -14,9 +14,12 @@ class TestStashRepoInfo < Minitest::Test
14
14
  assert_equal 'stash', ri.slug
15
15
  end
16
16
 
17
- should "extracting project key and repo slug from non stash url raises exception" do
18
- Atlassian::Stash::Git.stubs(:get_remotes).returns("origin git@bitbucket.org:sebr/atlassian-stash-rubygem.git (push)")
19
- assert_raises(RuntimeError) { RepoInfo.create({}) }
17
+ should "extracting project key and repo slug from SSH remote" do
18
+ Atlassian::Stash::Git.stubs(:get_remotes).returns("origin sruiz@stash-dev.atlassian.com:STASH/stash.git (push)")
19
+
20
+ ri = RepoInfo.create({})
21
+ assert_equal 'STASH', ri.projectKey
22
+ assert_equal 'stash', ri.slug
20
23
  end
21
24
 
22
25
  should "repo with hyphes" do
@@ -88,4 +91,4 @@ class TestStashRepoInfo < Minitest::Test
88
91
  assert_equal 'https://www.stash.com/foo/projects/STASH/repos/stash/commits?git=ftw&at=develop', ri.repoUrl('commits', 'develop')
89
92
  end
90
93
  end
91
- end
94
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atlassian-stash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seb Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-16 00:00:00.000000000 Z
11
+ date: 2015-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git