आपको अपने गिट कॉन्फ़िगरेशन में कस्टम विलय और diff ड्राइवरों को परिभाषित करने की आवश्यकता है, और उसके बाद उन्हें फ़ाइलों के साथ संबद्ध करने के लिए विशेषताओं का उपयोग करें।
यह सिर्फ डंप पर एक साधारण पाठ विलय करता है, इसलिए यह कुल बकवास का उत्पादन कर सकता है। आपको यह सुनिश्चित करने के लिए पूरी तरह से अपने काम की जांच करनी होगी कि यह सही बात है हालांकि यह आसान विलय से टेडियम लेना चाहिए।
अपने .git/config में:
[merge "sqlite3"]
name = sqlite3 merge driver
driver = merge-sqlite3 %O %A %B
[diff "sqlite3"]
name = sqlite3 diff driver
command = diff-sqlite3
में
।gitattributes:
signons.sqlite diff=sqlite3 merge=sqlite3
और कहीं अपने पथ में, अंतर-sqlite3
#!/usr/bin/perl -w
use File::Temp qw/ :POSIX /;
use IPC::Run qw/run/ ;
@ARGV == 7 or die sprintf 'wtf %s', join(' ', @ARGV);
my ($name, $x, $y) = ($ARGV[0], $ARGV[1], $ARGV[4]);
my ($a, $b);
eval {
$a = tmpnam();
$b = tmpnam();
run ['sqlite3', $x, '.dump'], '>', $a or die 'sqlite3 failed';
run ['sqlite3', $y, '.dump'], '>', $b or die 'sqlite3 failed';
print "diff-sqlite3 a/$name b/$name\n";
run ['diff', '-u', $a, $b, '--label', "a/$name", '--label', "b/$name"], '>', \*STDOUT;
unlink $a;
unlink $b;
1;
} or do {
unlink $a if defined $a;
unlink $b if defined $b;
die [email protected];
}
भी अपने रास्ते में
, नामित मर्ज-sqlite3
#!/usr/bin/perl -w
use File::Temp qw/ :POSIX /;
use IPC::Run qw/run/ ;
@ARGV == 3 or die sprintf 'wtf %s', join(' ', @ARGV);
my ($o, $a, $b) = @ARGV;
print "MERGEING SQLITE FILES $o $a $b\n";
eval {
$ad = tmpnam();
$bd = tmpnam();
$od = tmpnam();
run ['sqlite3', $o, '.dump'], '>', $od or die 'sqlite3 failed';
run ['sqlite3', $a, '.dump'], '>', $ad or die 'sqlite3 failed';
run ['sqlite3', $b, '.dump'], '>', $bd or die 'sqlite3 failed';
run ['merge', $ad, $od, $bd] or do {
my $newname = "$a.dump";
my $n = 0;
while (-e $newname) {
++$n;
$newname = "$a.dump.$n";
}
print "merge failed, saving dump in $newname\n";
rename $ad, $newname;
undef $ad;
die 'merge failed';
};
unlink $a or die $!;
my $err;
run ['sqlite3', $a], '>', \*STDOUT, '2>', \$err, '<', $ad;
if ('' ne $err) {
print STDERR $err;
die 'sqlite3 failed';
}
unlink $ad if defined $ad;
unlink $bd;
unlink $od;
1;
} or do {
unlink $ad if defined $ad;
unlink $bd if defined $bd;
unlink $od if defined $od;
die [email protected];
}
मैं बस अभी इन हैक की गई नाम है, अब आपको कंकों को लोहे से बाहर करना पड़ सकता है।
देखें: http://git-scm.com/docs/gitattributes और http://git-scm.com/docs/git-config
यह वास्तव में मर्ज हो जाएगा? यही है, फाइल दो अलग-अलग शाखाओं पर अलग-अलग बदल जाएगी? –