mirror of
https://github.com/git/git.git
synced 2026-03-14 10:53:25 +01:00
Merge branch 'master' into next
* master: Documentation: clarify tutorial pull/merge discussion gitweb: Make project description in projects list link to summary view git-svn: allow SVN:: lib users to track the root of the repository (again)
This commit is contained in:
@@ -209,29 +209,28 @@ at /home/bob/myrepo. She does this with:
|
||||
|
||||
------------------------------------------------
|
||||
$ cd /home/alice/project
|
||||
$ git pull /home/bob/myrepo
|
||||
$ git pull /home/bob/myrepo master
|
||||
------------------------------------------------
|
||||
|
||||
This actually pulls changes from the branch in Bob's repository named
|
||||
"master". Alice could request a different branch by adding the name
|
||||
of the branch to the end of the git pull command line.
|
||||
This merges the changes from Bob's "master" branch into Alice's
|
||||
current branch. If Alice has made her own changes in the meantime,
|
||||
then she may need to manually fix any conflicts. (Note that the
|
||||
"master" argument in the above command is actually unnecessary, as it
|
||||
is the default.)
|
||||
|
||||
This merges Bob's changes into her repository; "git log" will
|
||||
now show the new commits. If Alice has made her own changes in the
|
||||
meantime, then Bob's changes will be merged in, and she will need to
|
||||
manually fix any conflicts.
|
||||
The "pull" command thus performs two operations: it fetches changes
|
||||
from a remote branch, then merges them into the current branch.
|
||||
|
||||
A more cautious Alice might wish to examine Bob's changes before
|
||||
pulling them. She can do this by creating a temporary branch just
|
||||
for the purpose of studying Bob's changes:
|
||||
You can perform the first operation alone using the "git fetch"
|
||||
command. For example, Alice could create a temporary branch just to
|
||||
track Bob's changes, without merging them with her own, using:
|
||||
|
||||
-------------------------------------
|
||||
$ git fetch /home/bob/myrepo master:bob-incoming
|
||||
-------------------------------------
|
||||
|
||||
which fetches the changes from Bob's master branch into a new branch
|
||||
named bob-incoming. (Unlike git pull, git fetch just fetches a copy
|
||||
of Bob's line of development without doing any merging). Then
|
||||
named bob-incoming. Then
|
||||
|
||||
-------------------------------------
|
||||
$ git log -p master..bob-incoming
|
||||
@@ -240,8 +239,8 @@ $ git log -p master..bob-incoming
|
||||
shows a list of all the changes that Bob made since he branched from
|
||||
Alice's master branch.
|
||||
|
||||
After examining those changes, and possibly fixing things, Alice can
|
||||
pull the changes into her master branch:
|
||||
After examining those changes, and possibly fixing things, Alice
|
||||
could pull the changes into her master branch:
|
||||
|
||||
-------------------------------------
|
||||
$ git checkout master
|
||||
@@ -251,6 +250,18 @@ $ git pull . bob-incoming
|
||||
The last command is a pull from the "bob-incoming" branch in Alice's
|
||||
own repository.
|
||||
|
||||
Alice could also perform both steps at once with:
|
||||
|
||||
-------------------------------------
|
||||
$ git pull /home/bob/myrepo master:bob-incoming
|
||||
-------------------------------------
|
||||
|
||||
This is just like the "git pull /home/bob/myrepo master" that we saw
|
||||
before, except that it also stores the unmerged changes from bob's
|
||||
master branch in bob-incoming before merging them into Alice's
|
||||
current branch. Note that git pull always merges into the current
|
||||
branch, regardless of what else is given on the commandline.
|
||||
|
||||
Later, Bob can update his repo with Alice's latest changes using
|
||||
|
||||
-------------------------------------
|
||||
|
||||
@@ -2919,8 +2919,12 @@ sub libsvn_fetch {
|
||||
my $p = $SVN->{svn_path};
|
||||
foreach my $f (keys %$paths) {
|
||||
my $m = $paths->{$f}->action();
|
||||
$f =~ s#^/\Q$p\E/##;
|
||||
next if $f =~ m#^/#;
|
||||
if (length $p) {
|
||||
$f =~ s#^/\Q$p\E/##;
|
||||
next if $f =~ m#^/#;
|
||||
} else {
|
||||
$f =~ s#^/##;
|
||||
}
|
||||
if ($m =~ /^[DR]$/) {
|
||||
print "\t$m\t$f\n" unless $_q;
|
||||
process_rm($gui, $last_commit, $f);
|
||||
|
||||
@@ -2441,6 +2441,7 @@ sub git_project_list_body {
|
||||
($pr->{'age'}, $pr->{'age_string'}) = @aa;
|
||||
if (!defined $pr->{'descr'}) {
|
||||
my $descr = git_get_project_description($pr->{'path'}) || "";
|
||||
$pr->{'descr_long'} = to_utf8($descr);
|
||||
$pr->{'descr'} = chop_str($descr, 25, 5);
|
||||
}
|
||||
if (!defined $pr->{'owner'}) {
|
||||
@@ -2476,7 +2477,7 @@ sub git_project_list_body {
|
||||
} else {
|
||||
print "<th>" .
|
||||
$cgi->a({-href => href(project=>undef, order=>'project'),
|
||||
-class => "header"}, "Project") .
|
||||
-class => "header"}, "Project") .
|
||||
"</th>\n";
|
||||
}
|
||||
if ($order eq "descr") {
|
||||
@@ -2485,7 +2486,7 @@ sub git_project_list_body {
|
||||
} else {
|
||||
print "<th>" .
|
||||
$cgi->a({-href => href(project=>undef, order=>'descr'),
|
||||
-class => "header"}, "Description") .
|
||||
-class => "header"}, "Description") .
|
||||
"</th>\n";
|
||||
}
|
||||
if ($order eq "owner") {
|
||||
@@ -2494,7 +2495,7 @@ sub git_project_list_body {
|
||||
} else {
|
||||
print "<th>" .
|
||||
$cgi->a({-href => href(project=>undef, order=>'owner'),
|
||||
-class => "header"}, "Owner") .
|
||||
-class => "header"}, "Owner") .
|
||||
"</th>\n";
|
||||
}
|
||||
if ($order eq "age") {
|
||||
@@ -2503,7 +2504,7 @@ sub git_project_list_body {
|
||||
} else {
|
||||
print "<th>" .
|
||||
$cgi->a({-href => href(project=>undef, order=>'age'),
|
||||
-class => "header"}, "Last Change") .
|
||||
-class => "header"}, "Last Change") .
|
||||
"</th>\n";
|
||||
}
|
||||
print "<th></th>\n" .
|
||||
@@ -2528,7 +2529,9 @@ sub git_project_list_body {
|
||||
}
|
||||
print "<td>" . $cgi->a({-href => href(project=>$pr->{'path'}, action=>"summary"),
|
||||
-class => "list"}, esc_html($pr->{'path'})) . "</td>\n" .
|
||||
"<td>" . esc_html($pr->{'descr'}) . "</td>\n" .
|
||||
"<td>" . $cgi->a({-href => href(project=>$pr->{'path'}, action=>"summary"),
|
||||
-class => "list", -title => $pr->{'descr_long'}},
|
||||
esc_html($pr->{'descr'})) . "</td>\n" .
|
||||
"<td><i>" . chop_str($pr->{'owner'}, 15) . "</i></td>\n";
|
||||
print "<td class=\"". age_class($pr->{'age'}) . "\">" .
|
||||
$pr->{'age_string'} . "</td>\n" .
|
||||
|
||||
Reference in New Issue
Block a user