2017-07-28 31 views
5

我正在與Maven一起開發Java項目,我需要經常部署到兩個不同的weblogic環境。這兩個部署之間的唯一區別是這兩個文件中的一系列更改:pom.xmlweblogic.xml文件。其餘的文件是相同的。Git:使用99%的類似代碼維護2個分支

我們正在爲此創建2個GIT分支:dev & parallel-dev

但是我們在維護和合並這兩個分支之間的變化時遇到了許多問題。

所有的改變都在parallel-dev分支完成,一旦這個代碼被審查和批准,我們將它合併到dev分支,除了那些不需要合併的兩個文件(除非pom版本被修改 - 在這種情況下,我們需要合併版本更改,但不包括pom.xml中的其他更改)。這有點凌亂。

我認爲這種方法很混亂,可以改進,但不能真正看到如何。我很樂意爲這個過程保留一個分支,並避免我們面臨的所有瘋狂合併。

任何意見將不勝感激。

- 編輯 -

在pom.xml所不同的是隻爲平行-dev的分支不同的輪廓:

<profiles> 
<profile> 
    <id>parallel-dev</id> 
    <activation> 
    <activeByDefault>false</activeByDefault> 
    </activation> 

    <build> 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     </resource> 
     <resource> 
     <directory>src/test/resources</directory> 
     <filtering>true</filtering> 
     <includes> 
      <include>env.properties</include> 
      <include>more.properties</include> 
      ... 
     </includes> 
     </resource> 
    </resources> 

    <testResources> 
     <testResource> 
     <directory>src/test/resources</directory> 
     <filtering>true</filtering> 
     <excludes> 
      <exclude>env.properties</exclude> 
      <exclude>more.properties</exclude> 
      ... 
     </excludes> 
     </testResource> 
    </testResources> 
    </build> 
</profile> 

weblogic.xml差在上下文根名稱和庫引用(該lib還具有parallel-dev和dev分支)。

+0

也許申報的.gitignore文件,以便它們不會COMMITED – Lino

+5

@Lino 'pom.xml'?沒有!這100%需要承諾。 – Seelenvirtuose

+0

你可以保持pom.xml和weblogic.xml分開嗎 - 並且只有一個分支用於剩下的代碼? – notyou

回答

0

我會做到以下幾點:

  1. 隔離你這兩個文件在dev分支上的修改。
  2. 銷燬dev分支並從parallel-dev分支重新創建分支。
  3. 在新提交中重新應用dev分支上的更改。

現在,每當新的發展發生在parallel-dev分支,切換到dev分支做:

git rebase parallel-dev

(或在您的GUI工具相當於操作)。 這會將dev分支重置爲最新版本parallel-dev,並將隔離更改重新應用於這兩個xml文件。

如果更改爲parallel-dev恰巧與單獨的更改重疊,您仍然會合並衝突,但除此之外,您應該很好。 (雖然我會仔細檢查.xml文件只是爲了安全起見)

0

我會創造在項目中的兩個子模塊的Maven,保持代碼的父模塊,但在子模塊的不同配置英寸這樣你就不需要兩個不同的分支,所以你可以擺脫所有那些相關的合併衝突。父POM的

相關部分:

<modules> 
    <module>dev</module> 
    <module>paralleldev</module> 
</modules> 

而且在你只需要創建特定的POM和src/main/resources文件夾的子模塊,並在POM包括從父來源。該子模塊相關的部分:

<build> 
    <sourceDirectory>../src/main/java</sourceDirectory> 
</build> 

你可以做更多使用Maven編譯器插件在這裏,我們來看一看:Guide to Using Maven when You Can't Use the Conventions