blob: 0b6420ba401132d4c65613e49da07e1040b9d442 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
;;; my-git-extra.el --- Extra functions to work with git
;;; Commentary:
;;; Code:
(require 'magit)
(require 'git-link)
(defun my/clone-repo (url)
"Clone a repository in the workspace using URL."
(interactive "sURL:")
(let* ((repo-name (magit-clone--url-to-name url))
(target-dir (concat "~/workspace/" repo-name)))
(magit-clone-regular url target-dir nil)))
(defun my/get-sg-remote-from-hostname (hostname)
"Create a sourcegraph URL from HOSTNAME."
(format "sourcegraph.rbx.com/%s" hostname))
(defun my/git-link-work-sourcegraph (hostname dirname filename _branch commit start end)
"Create a link to sourcegraph given a HOSTNAME DIRNAME FILENAME _BRANCH COMMIT START and END."
;; Use the default branch of the repository instead of the
;; current one (we might be on a feature branch that is not
;; available on the remote).
(let ((sg-base-url (my/get-sg-remote-from-hostname hostname))
(main-branch (magit-main-branch)))
(git-link-sourcegraph sg-base-url dirname filename main-branch commit start end)))
(defun my/git-link-commit-work-sourcegraph (hostname dirname commit)
"Create the link to sourcegraph given a HOSTNAME DIRNAME and COMMIT."
(let ((sg-base-url (my/get-sg-remote-from-hostname hostname)))
(git-link-commit-sourcegraph sg-base-url dirname commit)))
;; for work related repositories, open them in our instance of sourcegraph
(add-to-list 'git-link-remote-alist '("github\\.rbx\\.com" my/git-link-work-sourcegraph))
(add-to-list 'git-link-commit-remote-alist '("github\\.rbx\\.com" my/git-link-commit-work-sourcegraph))
;; for personal code I use gitea, which is similar to codeberg
(add-to-list 'git-link-remote-alist '("git\\.my\\.net" git-link-codeberg))
(add-to-list 'git-link-commit-remote-alist '("git\\.my\\.net" git-link-commit-codeberg))
(provide 'my-git-extra)
;;; my-git-extra.el ends here
|