; Utilities for git operations
-(def default-root ".")
-
(defn- has-git-repo
[dir]
(first (filter #(= ".git" %)
(filter #(has-git-repo %)
(filter #(.isDirectory %) (.listFiles (io/file root)))))
-(defn- git-pull [dir]
- (p/process ["git" "-C" dir "pull" "--rebase"]))
+(defn- git-pull [dir] (p/process ["git" "-C" dir "pull" "--rebase"]))
(defn git-pull-all
"Runs `git-pull` on all the git repositories in a directory"
p/check
:out
slurp)
- pulls)]
+ pulls)]
;; Print corresponding directory name when pulling
;; Skip printing already up to date repos
(doseq [[dir out] (filter #(not (.contains (second %) "is up to date."))
- (map vector dirs outputs))]
+ (map vector dirs outputs))]
(println (str dir "\n" out)))))
(defn git-pull-rebase-branch
"Do git pull and rebase branch with master"
[dir]
+ (run-cmd ["git" "pull" "--rebase"])
(let [current-branch (str/trim (run-cmd ["git" "branch" "--show-current"]))]
- (git-pull dir)
(when (not (contains? #{"master" "main"} current-branch))
(run! print
(map run-cmd
- '[["git" "checkout" "master"]
- ["git" "pull" "--rebase"]
- ["git" "checkout" current-branch]
- ["git" "rebase" "master"]])))))
+ [["git" "checkout" "master"] ["git" "pull" "--rebase"]
+ ["git" "checkout" current-branch] ["git" "rebase" "master"]])))))