0
我們的定製合併驅動程序會不時衝突並執行不衝突的文件(如果您刪除合併驅動程序,則它們沒有任何衝突,因此在合併驅動程序,你可以做一個混帳合併文件,一切都很好)。Git合併驅動程序在某些文件中執行時沒有衝突
我們使用Git 2.5.1
我的Git的感知合併司機是,他們只對有衝突的文件執行?
的.gitattributes:
* merge=keeplocalversion
的的.gitconfig項:
[merge "keeplocalversion"]
name = "Keep local pom version"
driver = /home/atlstash/pommergetreiber/pommergedriver.sh %A %B %O %P
pommergedriver.sh:
#!/bin/bash
echo "==== STARTING MERGE DRIVER ===="
echo $1
echo $2
echo $3
echo $4
# CURRENT = destination branch (checked out branch)
CURRENT=$1
# OTHER = source branch
OTHER=$2
# ANCESTOR = common parent commit
ANCESTOR=$3
FULL_BRANCH_NAME="$(git symbolic-ref HEAD)"
if [ "$?" -ne "0" ]; then
echo "Detecting branch name failed!"
exit 1
fi
DESTINATION_BRANCH="$(echo $FULL_BRANCH_NAME | sed 's%refs/heads/%%')"
if [ "$?" -ne "0" ]; then
echo "Transforming destination branch failed!"
exit 1
fi
DESTINATION_BRANCH="$(echo $FULL_BRANCH_NAME | sed 's%refs/heads/%%')"
git merge-file --diff3 --marker-size=25 -L $DESTINATION_BRANCH -L "COMMON BASE" -L "SOURCE BRANCH" "${CURRENT}" "${ANCESTOR}" "${OTHER}"
什麼導致以下行爲:
<stash>@<machine>:<project>> git merge origin/feature/<branch>
==== STARTING MERGE DRIVER ====
.merge_file_bm9SCU
.merge_file_MU9B7n
.merge_file_IsOa8q
<project>/...BusinessLogicPositionImpl.java
==== STARTING MERGE DRIVER ====
.merge_file_RjSwel
.merge_file_WvT0MO
.merge_file_baS3FR
<project>/...AbstimmungRestServiceImpl.java
==== STARTING MERGE DRIVER ====
.merge_file_ZWlr2L
.merge_file_22faFf
.merge_file_14SIpi
<project>/...AbstimmungRestService.java
==== STARTING MERGE DRIVER ====
.merge_file_yd2o1c
.merge_file_zf9wHG
.merge_file_5UohlJ
<project>/...WPDAbstimmposten.java
Auto-merging <project>/...BusinessLogicPositionImpl.java
CONFLICT (content): Merge conflict in <project>/...BusinessLogicPositionImpl.java
Auto-merging <project>/...AbstimmungRestServiceImpl.java
CONFLICT (content): Merge conflict in <project>/...AbstimmungRestServiceImpl.java
Auto-merging <project>/...AbstimmungRestService.java
Auto-merging <project>/...WPDAbstimmposten.java
Automatic merge failed; fix conflicts and then commit the result.
兩個衝突的文件有實際的衝突,兩個合併的文件沒有。
爲什麼合併驅動程序爲這兩個文件執行beeing?
所以這是一個衝突的定義,這是誤導我。 我一直以爲只有在文件自動合併失敗時纔會發生衝突。 – BlackEye
@BlackEye,那個定義是正確的。只是自定義合併驅動程序不僅僅是爲了衝突而運行。 –