{"thread":{"id":"30545","subject":"[PATCH v5] git-svn: clarify the referent of dcommit's optional argument","startedAt":"2012-05-17T03:20:43Z","lastAt":"2012-05-17T09:37:07Z","messageCount":2,"participants":["Jon Seymour","Eric Wong"],"isPatch":true,"patchVersion":5,"patchTotal":null},"messages":[{"id":"191620","messageId":"1337224843-21718-1-git-send-email-jon.seymour@gmail.com","threadId":"30545","inReplyTo":null,"subject":"[PATCH v5] git-svn: clarify the referent of dcommit's optional argument","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2012-05-17T03:20:43Z","receivedAt":"2012-05-17T03:20:43Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"The documentation of the dcommit subcommand is reworded to clarify that\nthe optional argument refers to a git branch, not an SVN branch.\n\nThe discussion of the optional argument is put into its own paragraph\nas is the guidance about using 'dcommit' in preference to 'set-tree'.\n\nThe section on REBASE vs. PULL/MERGE is reworded to incorporate the\nadvice to prefer 'git rebase' previously in the description of 'dcommit'.\n\nSigned-off-by: Jon Seymour <jon.seymour@gmail.com>\n---\n Documentation/git-svn.txt | 39 +++++++++++++++++++--------------------\n 1 file changed, 19 insertions(+), 20 deletions(-)\n\ndiff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt\nindex 34ee785..1fd8a1f 100644\n--- a/Documentation/git-svn.txt\n+++ b/Documentation/git-svn.txt\n@@ -189,18 +189,16 @@ and have no uncommitted changes.\n \tlast fetched commit from the upstream SVN.\n \n 'dcommit'::\n-\tCommit each diff from a specified head directly to the SVN\n+\tCommit each diff from the current branch directly to the SVN\n \trepository, and then rebase or reset (depending on whether or\n \tnot there is a diff between SVN and head).  This will create\n \ta revision in SVN for each commit in git.\n-\tIt is recommended that you run 'git svn' fetch and rebase (not\n-\tpull or merge) your commits against the latest changes in the\n-\tSVN repository.\n-\tAn optional revision or branch argument may be specified, and\n-\tcauses 'git svn' to do all work on that revision/branch\n-\tinstead of HEAD.\n-\tThis is advantageous over 'set-tree' (below) because it produces\n-\tcleaner, more linear history.\n++\n+When an optional git branch name (or a git commit object name)\n+is specified as an argument, the subcommand works on the specified\n+branch, not on the current branch.\n++\n+Use of 'dcommit' is preferred to 'set-tree' (below).\n +\n --no-rebase;;\n \tAfter committing, do not rebase or reset.\n@@ -800,18 +798,19 @@ have each person clone that repository with 'git clone':\n \n REBASE VS. PULL/MERGE\n ---------------------\n-\n-Originally, 'git svn' recommended that the 'remotes/git-svn' branch be\n-pulled or merged from.  This is because the author favored\n+Prefer to use 'git svn rebase' or 'git rebase', rather than\n+'git pull' or 'git merge' to synchronize unintegrated commits with a 'git svn'\n+branch. Doing so will keep the history of unintegrated commits linear with\n+respect to the upstream SVN repository and allow the use of the preferred\n+'git svn dcommit' subcommand to push unintegrated commits back into SVN.\n+\n+Originally, 'git svn' recommended that developers pulled or merged from\n+the 'git svn' branch.  This was because the author favored\n `git svn set-tree B` to commit a single head rather than the\n-`git svn set-tree A..B` notation to commit multiple commits.\n-\n-If you use `git svn set-tree A..B` to commit several diffs and you do\n-not have the latest remotes/git-svn merged into my-branch, you should\n-use `git svn rebase` to update your work branch instead of `git pull` or\n-`git merge`.  `pull`/`merge` can cause non-linear history to be flattened\n-when committing into SVN, which can lead to merge commits reversing\n-previous commits in SVN.\n+`git svn set-tree A..B` notation to commit multiple commits. Use of\n+'git pull' or 'git merge' with `git svn set-tree A..B` will cause non-linear\n+history to be flattened when committing into SVN and this can lead to merge\n+commits unexpectedly reversing previous commits in SVN.\n \n MERGE TRACKING\n --------------\n-- \n1.7.10.1.514.ge33c7ea\n"},{"id":"191624","messageId":"20120517093707.GA18177@dcvr.yhbt.net","threadId":"30545","inReplyTo":"1337224843-21718-1-git-send-email-jon.seymour@gmail.com","subject":"Re: [PATCH v5] git-svn: clarify the referent of dcommit's optional argument","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2012-05-17T09:37:07Z","receivedAt":"2012-05-17T09:37:07Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Jon Seymour <jon.seymour@gmail.com> wrote:\n> The documentation of the dcommit subcommand is reworded to clarify that\n> the optional argument refers to a git branch, not an SVN branch.\n> \n> The discussion of the optional argument is put into its own paragraph\n> as is the guidance about using 'dcommit' in preference to 'set-tree'.\n> \n> The section on REBASE vs. PULL/MERGE is reworded to incorporate the\n> advice to prefer 'git rebase' previously in the description of 'dcommit'.\n> \n> Signed-off-by: Jon Seymour <jon.seymour@gmail.com>\n\nThanks, Acked-by: Eric Wong <normalperson@yhbt.net>\n\nPushed to git://bogomips.org/git-svn along with Avishay's recent patch\n"}]}