Git Product home page Git Product logo

org-jira's Introduction

org-jira mode

Join the chat at https://gitter.im/org-jira/Lobby MELPA

Use Jira in Emacs org-mode.

Sample of an org-jira buffer with a ticket synced using the org-jira-get-issues-from-custom-jql functionality:

* AHU-Tickets
** TODO [#C] a sample ticket with priority, in my AHU project           :AHU_39:
:PROPERTIES:
:assignee: Matthew Carter
:filename: this-years-work
:reporter: Matthew Carter
:type:     Story
:priority: Medium
:status:   To Do
:created:  2019-01-24T23:24:54.321-0500
:updated:  2021-07-19T18:40:30.722-0400
:ID:       AHU-39
:CUSTOM_ID: AHU-39
:type-id:  10100
:END:
:LOGBOOK:
CLOCK: [2022-02-24 Thu 20:30]--[2022-02-24 Thu 20:35] =>  0:05
  :id: 10359
  Sample time clock entry
:END:
*** description: [[https://example.atlassian.net/browse/AHU-39][AHU-39]]
  The summary is here
*** Comment: Matthew Carter
:PROPERTIES:
:ID:       10680
:created:  2019-01-24T23:25:19.455-0500
:updated:  2019-01-24T23:27:36.125-0500
:END:
  a sample comment on 39

TOC

Table of Contents

Contributing

CONTRIBUTING.md

Setup

Installation

To install, just grab it off of MELPA (ensure your ~/.emacs already has MELPA set up):

(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)

Then run M-x package-install RET org-jira RET and you're done!

Configuration

Create the org-jira-working-dir directory:

(make-directory "~/.org-jira")

In your ~/.emacs, you should set the variable as such:

(setq jiralib-url "https://your-site.atlassian.net")

The first time you try and connect to jira you will be asked for your username and password. Make sure to enter your username and not your email if they are different. If you use two-step verification you will need to create an APItoken and use that instead of your password.

If you don't want to enter your credentials (login/password) each time you go to connect, you can add to your ~/.authinfo.gpg or ~/.authinfo file, in a format similar to:

machine your-site.atlassian.net login [email protected] password yourPassword port 80

Please note that in the authinfo file, port 443 should be specified if your jiralib-url is https.

Usage

Getting Started

org-jira mode is easy to use, to get started (after installing this library) try running M-x org-jira-get-issues. You should see that it pulls in all issues that are assigned to you.

Following that, you can try out some of the org-jira mode commands by visiting one of the files (they're named after your Jira project code, for example, 'EX.org' for a project named 'EX').

Keybinds

Some of the important keybindings:

(define-key org-jira-map (kbd "C-c pg") 'org-jira-get-projects)
(define-key org-jira-map (kbd "C-c ib") 'org-jira-browse-issue)
(define-key org-jira-map (kbd "C-c ig") 'org-jira-get-issues)
(define-key org-jira-map (kbd "C-c ij") 'org-jira-get-issues-from-custom-jql)
(define-key org-jira-map (kbd "C-c ih") 'org-jira-get-issues-headonly)
(define-key org-jira-map (kbd "C-c iu") 'org-jira-update-issue)
(define-key org-jira-map (kbd "C-c iw") 'org-jira-progress-issue)
(define-key org-jira-map (kbd "C-c in") 'org-jira-progress-issue-next)
(define-key org-jira-map (kbd "C-c ia") 'org-jira-assign-issue)
(define-key org-jira-map (kbd "C-c ir") 'org-jira-refresh-issue)
(define-key org-jira-map (kbd "C-c iR") 'org-jira-refresh-issues-in-buffer)
(define-key org-jira-map (kbd "C-c ic") 'org-jira-create-issue)
(define-key org-jira-map (kbd "C-c ik") 'org-jira-copy-current-issue-key)
(define-key org-jira-map (kbd "C-c sc") 'org-jira-create-subtask)
(define-key org-jira-map (kbd "C-c sg") 'org-jira-get-subtasks)
(define-key org-jira-map (kbd "C-c cc") 'org-jira-add-comment)
(define-key org-jira-map (kbd "C-c cu") 'org-jira-update-comment)
(define-key org-jira-map (kbd "C-c wu") 'org-jira-update-worklogs-from-org-clocks)
(define-key org-jira-map (kbd "C-c tj") 'org-jira-todo-to-jira)
(define-key org-jira-map (kbd "C-c if") 'org-jira-get-issues-by-fixversion)

Customization

Get Issues from Custom JQL

You can define one or more custom JQL queries to run and have your results inserted into, as such:

(setq org-jira-custom-jqls
  '(
    (:jql " project IN (EX, AHU) and createdDate < '2019-01-01' order by created DESC "
          :limit 10
          :filename "last-years-work")
    (:jql " project IN (EX, AHU) and createdDate >= '2019-01-01' order by created DESC "
          :limit 10
          :filename "this-years-work")
    (:jql "
project IN (EX, AHU)
and status IN ('To Do', 'In Development')
AND (labels = EMPTY or labels NOT IN ('FutureUpdate'))
order by priority, created DESC "
          :limit 20
          :filename "ex-ahu-priority-items")
    ))

Please note this feature still requires some testing - things that may work in the existing proj-key named buffers (EX.org etc.) may behave unexpectedly in the custom named buffers.

One thing you may notice is if you create an issue in this type of buffer, the auto-refresh of the issue will appear in the PROJ-KEY.org specific buffer (you will then need to refresh this JQL buffer by re-running the command C-c ij).

Streamlined transition flow

You can define your own streamlined issue progress flow as such:

(defconst org-jira-progress-issue-flow
  '(("To Do" . "In Progress"
    ("In Progress" . "Done"))))

or using typical Emacs customize options, as its a defcustom.

This will allow you to quickly progress an issue based on its current status, and what the next status should be.

If your Jira is set up to display a status in the issue differently than what is shown in the button on Jira, your alist may look like this (use the labels shown in the org-jira Status when setting it up, or manually work out the workflows being used through standard C-c iw options/usage):

(defconst org-jira-progress-issue-flow
  '(("To Do" . "Start Progress")
    ("In Development" . "Ready For Review")
    ("Code Review" . "Done")
    ("Done" . "Reopen")))

Basic auth via personal API tokens (secure'ish)

Use a personal API token from here:

https://id.atlassian.com/manage/api-tokens

and your email address from here:

https://id.atlassian.com/manage-profile/email

and you should be able to work with basic auth, even if you are required to auth via Google usually on the browser domain.

Extra basic auth note (thanks @mujo-hash)

For Basic Authentication on cloud Jira, an api token must be used now in place of a password:

https://developer.atlassian.com/cloud/jira/platform/basic-auth-for-rest-apis/

https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/

The self-hosted version of Jira appears to still support Basic Authentication with a user password:

https://developer.atlassian.com/server/jira/platform/basic-authentication/

Using Bearer authentication with Personal Access Tokens

Some JIRA instances might require usage of Authorization headers using Bearer tokens as documented in Using PATs Atlassian documentation.

As documented, PATs should be used without a username in Authorization header as Bearer tokens. Following is an example of using PAT token stored in authinfo to authenticate to JIRA:

(setq jiralib-token
    (cons "Authorization"
          (concat "Bearer " (auth-source-pick-first-password
              :host "jira.company.com"))))

Last Resort Authorization workaround (NOT secure)

However, if all else fails (your Jira instance has disabled basic auth entirely), you can still get in by copying your web browser's cookie. Open up developer console and in the Network tab right click the request for the JIRA page and select 'Copy request as cURL'. Paste it into a file so you can copy out the value for the cookie "cloud.session.token". Then set jiralib-token like this:

(defconst jiralib-token
   '("Cookie" . "cloud.session.token=<YOUR COOKIE VALUE>"))

Optimizations

It's possible some things in your Jira instance rarely if ever change - while org-jira will dynamically query everything as needed, it makes use of some variables/caching per-run of Emacs. If you ever notice something was changed on the Jira setup level, you may have to restart your Emacs (or manually unset these variables). By the same token, that makes it possible to hardcode some of these values yourself, so org-jira never needs to look them up.

Some samples may be:

Optimizing available actions for status changes

Take time inspecting jiralib-available-actions-cache variable as you use org-jira, when you see the type of data it stores, you can then just define it yourself, as such, so repeated usage will not need to re-query the endpoints to get these lists:

(defconst jiralib-available-actions-cache
  '(("To Do"
     ("71" . "Business Question")
     ("11" . "Start Progress"))
    ("Code Review"
     ("71" . "Business Question")
     ("91" . "Reject")
     ("171" . "Failed Peer Review")
     ("221" . "Done"))
    ("In Development"
     ("71" . "Business Question")
     ("21" . "Ready For Review")
     ("81" . "Reject")
     ("161" . "Stop Progress"))
    ("Done"
     ("71" . "Business Question")
     ("141" . "Re-open"))))

About

Maintainer

You can reach me directly: Matthew Carter [email protected], or file an issue here on https://github.com/ahungry/org-jira.

License

GPLv3

org-jira's People

Contributors

ahungry avatar ashawley avatar baohaojun avatar cepehang avatar dmh43 avatar dudinea avatar fuco1 avatar jack-michaud avatar jeremy-compostella avatar joranvar avatar jwykeham avatar khaije1 avatar krzysiekj avatar lelit avatar lvsv avatar maximvl avatar micha224 avatar mskorzhinskiy avatar nickgarber avatar nimsed avatar olymk2 avatar pierre-fastly avatar pschorf avatar puercopop avatar schouleu avatar shashurup avatar stsquad avatar syohex avatar vlladdrakk avatar zainab-ali avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

org-jira's Issues

option to only sync worklogs for currentUser()

This option should be enabled by default, since it's probably what most people would expect.

Enabling this option preserves the org-clock data as an individual's work log, while preserving a means to interface with Jira.

Also to provide greater clarity, each worklogs should indicate the :user: similarly to the :id: data.

Error while connecting in execution of org-jira-get-issues

Hi,

I'm getting following error when using function org-jira-get-issues:

Contacting host: jira.custom-domain.io:443
REQUEST [error] Error (error) while connecting to https://jira.custom-domain.io/rest/api/2/search.

When I try loading URL that failed manually using browser I get REST response.
Could it be because of the custom domain jira is on for my organisation?

What I can I do to get more info about this error?

invalid priority options presented during org-jira-create-issue

When selecting Priority, all Priorities are displayed, rather than priorities that are valid for the Project, resulting in an error when a priority that is invalid for that field is selected.

This could be confusing for the org-jira user.

A preferable case would be to only present the statuses that are valid according to the information already presented to the user during the interactive M-x org-jira-create-issue dialogs.

Specify org-files to sync projects

I would like it to be possible to specify which file projects sync their issues to. I already have existing org-files for each project I have in Jira (I keep them as a sort of lab notebook), and would like to sync to these files instead of the ones in ~/.org-jira/ so I don't have to jump back and forth between files.

Similar to issue #51, I would like to have some order to my issues after I am done working with them. I can get around the requirement being at a top-level subtree, I can just move them after I sync the issues.

jira story type can not be update or progress

when i update the priority from Medium to Low, it didn't take affect.
when i progress the story, it show Wrong type argument: listp, 116.
i wonder whether it can show all comment so that i can update someone.

i can add comment and create new issue successfully.

my org-jira version is:
~/.emacs.d/elpa/org-jira-20161215.2310

REQUEST [error] Error (error) while connecting to.

Hi, I'm getting the following errors when trying to connect to our Jira instance:

REQUEST [error] Error (error) while connecting to https:///rest/api/2/project.
REQUEST [error] Error (error) while connecting to https:///rest/api/2/search.

I've removed the hostname, to keep $JOB happy.

I could use some help with sorting out how to debug this. I don't think it is environmental as I can hit the urls with other clients.

Thanks,
jr

Updating worklog

Hi, my company forced me to use jira to track a new project and so I would like to thank you for the fantastic job you have done so that I don't have to leave org-mode :)

Now the question. When I create a new issue from org-jira (org-jira-create-issue) it doesn't have any custom id or headline related to work log. If I create a worklog headline (with a link to the jira task) and then update worklog (org-jira-update-worklog), org-jira asks me a couple of questions (how much time spent and start date) then nothing happens: the worklog headline is deleted and if i go on the web interface the worklog is not updated.

I'm using org-jira latest from melpa (20170207.2145), Emacs 26.0.50 and JIRA v1000.747.1

Am I doing something wrong?
TIA

Segregate JIRA issues in OPS.org

How can I best segregate the JIRA issues in OPS.org file. I want something like:

* May 2017
** TODO JIRA-4
** DONE JIRA-3
* April 2017
** TODO JIRA-1
** DONE JIRA-2

Feature: Add new org-jira-progress-issue-next

Feature: Add new org-jira-progress-issue-next

Many times, issues will progress along a common path (todo, in-progress, done etc.) or (todo, in-progress, code-review, qa, uat, done).

It would be nice to allow the user to specify a list of path progression and a function that will check the current progress of issue and immediately jump to the next progress state in list.

Creating/Updating Issue/Comment with Umlaute fails

Hi, first of all: Thanks for this excellent work

We're using JIRA with german umlaute (öüöß) and unfortunately creating/updating an issue or comment fails. I get the following information (i.e. creating an Issue - this is what emacs returns to me)

<ns1:createIssue>
<ns4:in0 xsi:type="xsd:string">3a9e01ca71b0351ac41b2df0c5fa0800d40fd648</ns4:in0>
<ns4:in1><ns5:description xsi:type="xsd:string">Philipp hat einen anderen Benutzernamen als sonst und sollte den gleichen bekommen.</ns5:description>
<ns5:priority xsi:type="xsd:string">4</ns5:priority>
<ns5:project xsi:type="xsd:string">EJ</ns5:project>
<ns5:summary xsi:type="xsd:string">Benutzername von Philipp \303\244ndern</ns5:summary>
<ns5:type xsi:type="xsd:string">4</ns5:type>
</ns4:in1>
</ns1:createIssue>
</soap:Body>
</soap:Envelope>

Is it some configuration I missed or does it not work in generally?

Get all issues from project

Hi,
Is there any possibility to get all issues from a project if those are not assigned to me? I didn't find an option for this.

Thanks for your time and work.

Invalid JSON produced for component list.

Hi, thanks for this awesome project.

On emacs 25.4.1 I am noticing that the structure generated for the component list does not properly get converted to JSON, which stops several update operations. I'm not sure if it's something weird about my set up, since I would imagine others would have hit this issue too...

The first problem is that out of the box it produces a list like: (components (id . comp-id) (id . item)) - i.e., comp-id and item are never evaluated. The second problem is that json-encode converts this to an object, i.e., {"components": {"id":"comp-id", "name": "item"}, .... when jira's rest api wants it as an array of objects, i.e., {"components": [{"id":"comp-id", "name": "item"}], ....

Gitter channel for org-jira?

Hi @ahungry,

what do you think about creating a Gitter channel for org-jira where one can have short discussions / Q&As?
For some discussions, the real-time chat in Gitter is a quite effective way of communication.

Using cygwin curl in w32 Emacs fails to process a request

This may be slightly related to #17 as I'm running GNU Emacs 25.1.1 (x86_64-w64-mingw32) on Windows 7 and getting errors for all of the org-jira-get* functions except org-jira-get-projects.

Unlike #17, I get the following after setting request to debug:

(setq request-log-level 'debug)
(setq request-message-level 'debug)

Output:

REQUEST [debug] REQUEST
REQUEST [debug] Run: curl --silent --include --location --compressed --cookie c:/users/jeff.tecca/.emacs.d/request/curl-cookie-jar --cookie-jar c:/users/jeff.tecca/.emacs.d/request/curl-cookie-jar --write-out \n(:num-redirects %{num_redirects} :url-effective %{url_effective}) --data-binary @c:/Users/JEFF~1.TEC/AppData/Local/Temp/emacs-request131168zuv --request POST --header Authorization: Basic Wk5FNTA0NzE6d2lyeTAhd2F2ZXNiaWtpbmk= --header Content-Type: application/json http://company.jira.com/rest/api/2/search
REQUEST [debug] REQUEST--CURL-CALLBACK event = finished

REQUEST [debug] REQUEST--CURL-CALLBACK proc = #<process request curl>
REQUEST [debug] REQUEST--CURL-CALLBACK buffer = #<buffer  *request curl*>
REQUEST [debug] REQUEST--CURL-CALLBACK symbol-status = nil
REQUEST [debug] REQUEST--CALLBACK
REQUEST [debug] (buffer-string) =

(:num-redirects 0 :url-effective http://maxResults:100/)HTTP/1.1 400 Bad Request

Server: Apache-Coyote/1.1

X-AREQUESTID: 682x1514029x1

X-ASESSIONID: r5qfcc

X-ASEN: SEN-2603490

X-Seraph-LoginReason: OK

X-AUSERNAME: myusername

Cache-Control: no-cache, no-store, no-transform

X-Content-Type-Options: nosniff

Content-Encoding: gzip

Vary: User-Agent

Content-Type: application/json;charset=UTF-8

Transfer-Encoding: chunked

Date: Thu, 18 May 2017 18:22:50 GMT

Connection: close



{"errorMessages":["Unexpected character ('j' (code 106)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: org.apache.catalina.connector.CoyoteInputStream@163976f8; line: 1, column: 2]"]}
REQUEST [debug] REQUEST-RESPONSE--CANCEL-TIMER
REQUEST [debug] -CLEAN-HEADER
REQUEST [debug] -CUT-HEADER
REQUEST [debug] error-thrown = nil
REQUEST [debug] -PARSE-DATA
REQUEST [debug] parser = json-read
REQUEST [error] Error from parser json-read: (wrong-type-argument number-or-marker-p nil)
REQUEST [debug] data = nil
REQUEST [debug] symbol-status = parse-error
REQUEST [debug] Executing error callback.
REQUEST [error] Error (parse-error) while connecting to http://company.jira.com/rest/api/2/search.

The username and the jiralib-url are correct (I changed it in my reply here in order to avoid over-sharing information). I presume that the authorization is working if I am able to get the list of projects for projects-list.org, but I am not sure how to confirm that.

If I execute the request in curl directly, I get the following output:

~ $ curl --silent --include --location --compressed --cookie c:/users/jeff.tecca/.emacs.d/request/curl-cookie-jar --cookie-jar c:/user s/jeff.tecca/.emacs.d/request/curl-cookie-jar --write-out "\n(:num-redirects %{num_redirects} :url-effective %{url_effective})" --data -binary @c:/Users/JEFF~1.TEC/AppData/Local/Temp/emacs-request1377201mP --request POST --header Authorization: Basic tokenpart tokenpart2 --header Content-Type: application/json http://company.jira.com/rest/api/2/search

(:num-redirects 0 :url-effective http://Basic/)
(:num-redirects 0 :url-effective http://tokenparttokenpart2/)
(:num-redirects 0 :url-effective http://application/json)HTTP/1.1 415 Unsupported Media Type
Server: Apache-Coyote/1.1
X-AREQUESTID: 591x1511723x1
X-ASESSIONID: r5qfcc
X-ASEN: SEN-2603490
X-Seraph-LoginReason: OK
X-AUSERNAME: myusername
Cache-Control: no-cache, no-store, no-transform
X-Content-Type-Options: nosniff
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1135
Date: Thu, 18 May 2017 16:51:49 GMT

<!DOCTYPE html><html><head><title>Apache Tomcat/8.0.17 - Error report</title><style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style> </head><body><h1>HTTP Status 415 - Unsupported Media Type</h1><div class="line"></div><p><b>type</b> Status report</p><p><b>message</b> <u>Unsupported Media Type</u></p><p><b>description</b> <u>The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.</u></p><hr class="line"><h3>Apache Tomcat/8.0.17</h3></body></html>
(:num-redirects 0 :url-effective http://company.jira.com/rest/api/2/search)

I obviously changed the 'tokenpart' 'tokenpart2' strings before posting here in order not to leak more info.

I'm not sure where else to debug from here... Any ideas?

Add Epic Link and Issue Link to org-jira task properties

The Epic Link would help when filtering for and selecting tasks to work on.

The Issue Link is similar, but perhaps more special.

I'm interested in the ability to get and set this info from org-jira, but also with the potential for integration with the org-depend system.
http://orgmode.org/worg/org-contrib/org-depend.html

The todo-dependencies ( http://orgmode.org/manual/TODO-dependencies.html) may also be relevant.

In the first and simple case, it'd still be useful to have these available in org-mode as conventional strings.
The org-depend tie-in was only mentioned in case it spurred a brainstorm :)

Question: Minimum Supported Emacs Version?

I've noticed that the org-jira-update-issue function doesn't update worklog-id's when using the Emacs version on CentOSv7.

It does work on version 25.1.1 on a different machine.

Is there a minimum Emacs version required?

If this difference is unintended I'd be happy to assist in clearing it up.

Can't install from Melpa

Warning (initialization): An error occurred while loading ‘/Users/user/.emacs.d/init.el’:

File error: http://melpa.milkbox.net/packages/org-jira-20170207.2145.tar, Not found

Deviating Search Results Using org-jira-default-jql

As I am interested in all unresolved issues/tickets of our project, I configured org-jira-default-jql in the following manner:

(custom-set-variables
 '(org-jira-default-jql
   "project = PROJECT and issuetype != Epic and resolution = unresolved ORDER BY
  priority DESC, created ASC"))

To my surprise I not only received tickets of type Epic, but also far fewer than I find in JIRA via its web front-end. We have maxResults configured below the default value of 1000, but this limit has not been reached by far. Obviously I am using the same user in both cases.

Refresh all issues

I am looking for a way to run org-jira-refresh-issue over all issues. I guess a feature request for an org-jira-refresh-issues command.

Set Org-Mode Task's Priority from Jira Priority

Hi! In my org-mode I use priority cookies [#A] through [#E].

In Jira it's a mess of a variety of priority labels, but I'd still like them to show up ranked by priority in my Org-Agenda.

If I could define a mapping between Jira priorities and Org-Mode priorities in a variable I could keep it up to date and still get the really nice priority-sorted presentation of Org-Agenda for my Jira tasks.

Thanks!

Comments not Displayed from JIRA v6.4.14

While they show up just fine when calling org-jira-get-issues targeting JIRA v7.2.7. Possibly also worth mentioning: v6 is accessed via https, while v7 with http only. Running request.el with debug does not produce an obvious error.

Changing a comment works fine when they are shown, but is there a way to create a comment also?

org-jira-get-issues-headonly not retrieving info

Some functions are working for me, such as org-jira-get-issue (by ID) and org-jira-get-projects, but whenever I try to use a function that has to retrieve many issues at once, for example org-jira-get-issues-from-filter or org-jira-get-issues-headonly, nothing happens.

The error I am getting sometimes in the minibuffer is:

REQUEST [error] Error (error) while connecting to http://mycompanysname.atlassian.net/rest/api/2/search

Also I tried accesing the same API's functionality directly in the browser and it worked. Any idea on why this is happening?

How to install on emacs 25?

Sorry if this is a stupid question.
I'm trying to install org-jira on emacs 25.1.1 on Fedora 25 (M-x package-install org-jira), but I get the error message "Package ‘emacs-24.5’ is unavailable". What am I doing wrong?

Many calls are sync, changing them to async greatly speeds up the package

I'm going to be merging the Async branch soon.

If anyone wants to test/critique it, please let me know. I think all features with it are currently functioning as expected.

There are ~2 new defcustom caching options which could present issues if enabled for users who have projects with many distinct workflows, but for users who are on one (or more) projects with very similar workflow, the performance boost is huge.

Let me know your thoughts!

`org-jira-refresh-issue` from Org-Agenda, (for issue under point, etc)

Would it be possible to add the ability to refresh an org-jira task from the org-agenda?

By default this would be the issue under point, within region, or if there are none of the proceeding (and with a confirmation prompt), all of the displayed issues.

Use Case:

I find myself using M Like m, but only TODO entries from the Org-Agenda view in order to filter tasks by Org-Jira properties. From time to time these tasks will get out of date and it'd be lovely to be able to perform an org-jira-refresh-issue from within this buffer (perhaps it would also trigger a refresh) and without needing to visit each Org-Jira task in each Org-Jira project file.

Working with arbitrarily nested task hierarchies?

When working with Org, I like to keep track of my TODOs at a very fine-grained level.
AFAIK JIRA on the other hand only allows for one level of sub-tasks which is quite restricting.
So what I'd like to do is to have tasks at the top-level be JIRA issues, task at the second level sub-tasks and then finer-grained tasks in the description or a comment of the sub-task.

I tried creating a third-level Org task with three asterisks at the beginning of a line in a comment and a description. Unfortunately that didn't come out as a bullet point on the first, but rather the third level in JIRA.
AFAIS the correct way to add text to comments in org-jira is to indent text by two spaces and then I could use one asterisk to get a bullet point. That doesn't seem "compatible" with Org itself though, at least I can't use the regular shortcuts to e.g. update the progress of such a bullet point.

Is there a better way to handle fine-grained task hierarchies? If not, would it be possible to treat tasks at levels > 2 as text in JIRA with two asterisks removed, i.e. have

* TODO Some JIRA issue :I_123:
  :PROPERTIES: ...
** description:
*** A task on third level
**** A task on fourth level

show up in the description of example JIRA issue I_123 like this?

* A task on third level
** A task on fourth level

org-get-issues doesn't complete. Wrong type argument: stringp,

Perhaps its custom field or some such thing. I don't know how to really debug this, so I'ma asking for help here.

Thanks.

This is from the Messages buffer

REQUEST [debug] REQUEST
REQUEST [debug] Run: curl --silent --include --location --compressed --cookie /home/james/.emacs.d/request/curl-cookie-jar --cookie-jar /home/james/.emacs.d/request/curl-cookie-jar --write-out \n(:num-redirects %{num_redirects} :url-effective "%{url_effective}") --data-binary @- --request POST --header Authorization: Basic omit --header Content-Type: application/json https://tools.lowes.com/jira/rest/api/2/search
REQUEST [debug] REQUEST--CURL-CALLBACK event = finished

REQUEST [debug] REQUEST--CURL-CALLBACK proc = #
REQUEST [debug] REQUEST--CURL-CALLBACK buffer = #<buffer request curl>
REQUEST [debug] REQUEST--CURL-CALLBACK symbol-status = nil
REQUEST [debug] REQUEST--CALLBACK
REQUEST [debug] (buffer-string) =
HTTP/1.1 200 OK
Date: Fri, 02 Jun 2017 01:42:17 GMT
Server: Apache-Coyote/1.1
X-AREQUESTID: 1302x2046358x1
X-ASESSIONID: ofje5
X-ASEN: SEN-3876129
X-Seraph-LoginReason: OUT
X-Seraph-LoginReason: OK
X-AUSERNAME: jrichar
Cache-Control: no-cache, no-store, no-transform
X-Content-Type-Options: nosniff
Content-Encoding: gzip
Vary: User-Agent
Content-Type: application/json;charset=UTF-8
Set-Cookie: crowd.token_key=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly
Set-Cookie: crowd.token_key=fxHMrV76SqLvm7TmibzDWg00; Path=/; HttpOnly
Set-Cookie: JSESSIONID=F315FD985E02009ED9E954FFC70B9F2C; Path=/jira; Secure; HttpOnly
Transfer-Encoding: chunked

{"expand":"names,schema","startAt":0,"maxResults":100,"total":1,"issues":[{"expand":"operations,versionedRepresentations,editmeta,changelog,renderedFields","id":"261292","self":"https://tools.lowes.com/jira/rest/api/2/issue/261292","key":"GEN-170","fields":{"customfield_15000":"com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38874556","customfield_12010":"Not started","customfield_13102":null,"fixVersions":[{"self":"https://tools.lowes.com/jira/rest/api/2/version/17243","id":"17243","name":"AIX - June Release","archived":false,"released":false}],"customfield_13500":null,"resolution":null,"customfield_12410":null,"customfield_12413":null,"customfield_13502":null,"customfield_12412":null,"customfield_10104":null,"customfield_12008":null,"customfield_10105":null,"customfield_12007":null,"customfield_12403":null,"customfield_12009":null,"customfield_12405":null,"customfield_12801":null,"customfield_10900":null,"customfield_10902":null,"customfield_10903":null,"customfield_10906":null,"lastViewed":null,"customfield_14300":null,"customfield_14301":null,"customfield_12002":null,"customfield_12001":null,"customfield_10100":null,"customfield_12004":null,"customfield_10101":null,"customfield_12003":null,"customfield_10102":null,"customfield_12006":null,"labels":["Genesis_Infrastructure"],"customfield_12005":null,"customfield_11700":null,"customfield_13603":null,"customfield_13605":null,"customfield_13604":null,"aggregatetimeoriginalestimate":null,"timeestimate":null,"versions":[],"issuelinks":[],"assignee":{"self":"https://tools.lowes.com/jira/rest/api/2/user?username=jrichar","name":"jrichar","key":"jrichar","emailAddress":"[email protected]","avatarUrls":{"48x48":"https://tools.lowes.com/jira/secure/useravatar?ownerId=jrichar&avatarId=17802","24x24":"https://tools.lowes.com/jira/secure/useravatar?size=small&ownerId=jrichar&avatarId=17802","16x16":"https://tools.lowes.com/jira/secure/useravatar?size=xsmall&ownerId=jrichar&avatarId=17802","32x32":"https://tools.lowes.com/jira/secure/useravatar?size=medium&ownerId=jrichar&avatarId=17802"},"displayName":"James Richardson","active":true,"timeZone":"America/New_York"},"status":{"self":"https://tools.lowes.com/jira/rest/api/2/status/10600","description":"","iconUrl":"https://tools.lowes.com/jira/images/icons/statuses/generic.png","name":"New","id":"10600","statusCategory":{"self":"https://tools.lowes.com/jira/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"To Do"}},"components":[],"customfield_15100":null,"customfield_13200":null,"customfield_11300":null,"customfield_14803":null,"customfield_14801":null,"customfield_12901":null,"customfield_14802":null,"customfield_12900":null,"aggregatetimeestimate":null,"creator":

I removed everything from until the success line as it has many emails descriptions with potentially confidential information.... I know sucks for a bug report/help request.

REQUEST [debug] symbol-status = success
Tag :GEN_170: set in 1 headings
not: Wrong type argument: stringp, ((customfield_15000 . "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38874556") (customfield_12010 . "Not started") (customfield_13102) (fixVersions . [((self . "https://tools.lowes.com/jira/rest/api/2/version/17243") (id . "17243") (name . "AIX - June Release") (archived . :json-false) (released . :json-false))]) (customfield_13500) (resolution) (customfield_12410) (customfield_12413) (customfield_13502) (customfield_12412) ...)

Only org-jira-get-issues works fine

I am sure it's some problem on my side...

Environment:

  1. GNU Emacs 25.1.1 (x86_64-w64-mingw32)
  2. org-jira-20161218.1938 from MELPA
  3. Docker JIRA Core 7.2.6 (see https://github.com/cptactionhank/docker-atlassian-jira) with sample setup

When I run M-x org-jira-get-issues, I get in *Messages*:

Contacting host: 192.168.99.100:8080 [2 times]
(New file)
Tag :NEXT_2: set in 1 headings
Contacting host: 192.168.99.100:8080
Tag :NEXT_3: set in 1 headings
Tag :NEXT_4: set in 1 headings
Tag :NEXT_5: set in 1 headings
Tag :NEXT_6: set in 1 headings
Tag :NEXT_1: set in 1 headings

Issues display fine, but no comments.

M-x org-jira-update-issue
Symbol's function definition is void: getf
no update

M-x org-jira-refresh-issue
org-jira-refresh-issue cb
no refresh

M-x org-jira-get-issues
no refresh

After restarting Emacs though...
M-x org-jira-get-issues
Issues display fine. Update done via web interface shown. All other problems remain.

...and if that were not stange enough: M-x org-jira-update-issue worked once immediately after I connected to JIRA for the very first time, but never again afterwards.

I had the same problems at work, so I figured there is something wrong with our JIRA there. (Un-)fortunately I was able to replicate them at home.

Log in with Google

Can't seem to get this working. Our JIRA accounts redirect to google login, and then authorize from there. Any way to get that supported?

Improvement: Async downlaod of issues; Sync loading of comments and worklogs.

@ahungry
Think about moving org-jira-get-issues in background completely.
I'm new to Emacs and read there is no multithreading, but jiralib seems to do it quite well for the comments and worklogs.
So instead of having issue body loaded sync, and comments and worklogs async, think about synchronizing issue, comments and worklogs and moving the whole package in background.

I see two potential benefits:

  • org-jira-get-issues will not block Emacs, so it can run in background (e.g. automatically run on start of emacs, or autorefreshing from time to time)
  • better predictability when some content is available / extensibility trough hooks.

I'm pretty sure there are some issues I don't see, but just a hint :)

Question: Could org-jira be the foundation for an external-systems interface layer?

From time to time I find myself wishing that other systems in my life were as well integrated into org-mode as Jira is, (thanks to org-jira).

<thought experiment>
What if this is actually possible and we're looking at the beginnings of it here?
How would we describe the steps looking backward from that possible future?
</thought experiment>

Use org markup for node bodies

I wonder if ox-jira could be used to automatically reformat org markup to jira. Something similar but in reverse could be used to convert jira syntax into org markup.

Option to Use Default Worklog Comment if Blank

Jira will add a default comment like: "Working on {{Issue}}"
when a worklog comment isnt' set.

I'd like org-jira to do something similar for when a clock record is uncommented prior to submitting to Jira.

Automatic org-agenda integration ?

Hi
From what Ive seen so far I couldn't find any option that tasks pulled with org-jira are automatically added to the agenda.
What I was planning to do is write some hooks / wrappers around org-mode and org-jira so that when org-agenda is triggered, jira tickets are automatically included in it.

Is something like this already available ?

Add agile endpoints

At our company, we're using the agile boards and sprints stuff from Jira. It would be nice to have the ability to operate with those entities.

Mainly I want to be able to fetch my issues from the current sprint, so I can easily narrow the list of assigned issues.

I've started to work on this, but I'm a total elisp newbie so I'll need some help for sure. I started here https://github.com/marc0s/org-jira/commits/issue-agile-requests

Any feedback will be appreciated 😃.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.