git - merge 到 master 与 sbt release-plugin

标签 git sbt release sbt-release

我正在尝试使用 sbt-release 插件发布我的 sbt 项目。 当我在 develop brunch 上执行“sbt release”任务时,它会基于这个分支创建一个新标签,但不会将当前 develop 分支的更改 merge 到 master。 是否可以在发布时将 develop 分支中所做的所有更改 merge 到 master 中?

我需要这样的东西:

  1. 将项目版本更改为发布版本,并将这些更改推送到远程开发分支。
  2. 将最新的开发提交 merge 到 master 分支并标记它。
  3. 将版本号更改为下一个快照并将这些更改推送回远程开发。

那么我怎样才能实现这种行为呢?

最佳答案

您可以通过使用您自己的自定义步骤更改发布过程来实现。 基本上我只是从 sbt-release 代码中复制了这些步骤,并添加了一些我自己的

lazy val deploySettings: Seq[Def.Setting[_]] = {
  import ReleaseTransformations._
  import ReleasePlugin.autoImport._
  import sbtrelease.{Git, Utilities, ExtraReleaseCommands}
  import Utilities._
  val deployBranch = "master"
  def merge: (State) => State = { st: State =>
    val git = st.extract.get(releaseVcs).get.asInstanceOf[Git]
    val curBranch = (git.cmd("rev-parse", "--abbrev-ref", "HEAD") !!).trim
    st.log.info(s"####### current branch: $curBranch")
    git.cmd("checkout", deployBranch) ! st.log
    st.log.info(s"####### pull $deployBranch")
    git.cmd("pull") ! st.log
    st.log.info(s"####### merge")
    git.cmd("merge", curBranch, "--no-ff", "--no-edit") ! st.log
    st.log.info(s"####### push")
    git.cmd("push", "origin", s"$deployBranch:$deployBranch") ! st.log
    st.log.info(s"####### checkout $curBranch")
    git.cmd("checkout", curBranch) ! st.log
    st
  }
  lazy val mergeReleaseVersionAction = { st: State =>
    val newState = merge(st)
    newState
  }
  val mergeReleaseVersion = ReleaseStep(mergeReleaseVersionAction)
  publishingSettings ++
    Seq(
      releaseProcess := Seq[ReleaseStep](
        checkSnapshotDependencies,
        inquireVersions,
        runClean,
        runTest,
        setReleaseVersion,
        commitReleaseVersion,
        pushChanges,                //to make sure develop branch is pulled
        mergeReleaseVersion,        //will merge into master and push
        tagRelease,
        setNextVersion,
        commitNextVersion,
        pushChanges
      )
    )
}

假设你正在使用 git

不是很漂亮,但它有效。

关于git - merge 到 master 与 sbt release-plugin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32643873/

相关文章:

git - Azure云服务持续部署服务配置

scala - 以编程方式从 Storm Bolt 杀死拓扑时出现编译错误 : object and package with same name

java - 构建 apache Spark 时出错

android - 如何在不签名的情况下创建 apk 版本

xcode - AVAudioPlayer 在播放前释放?

android - 更新后,Project.xml 文件会自动在 android studio 中进行编辑和暂存以供提交

android - Gitignore 不会忽略文件夹 android,react native

c# - 为什么我的 Xamarin PCL 在为通用应用程序构建版本时抛出运行时异常?

git - 我不小心创建了一个名为 origin/foo 的本地分支。怎么办?

java - SBT:如何防止自动将 scala-library 添加到 pom?