Difference between revisions of "Svn practices"
(→Write access) |
(replaced links to incubator pages) |
||
(26 intermediate revisions by one other user not shown) | |||
Line 3: | Line 3: | ||
This page gathered svn practices frequently used by contributors and committers. If you have any advice to this page, please feel free to update it or discuss your idea in ooo-dev mail list. | This page gathered svn practices frequently used by contributors and committers. If you have any advice to this page, please feel free to update it or discuss your idea in ooo-dev mail list. | ||
− | SVN Client 1.7 is recommanded to use for AOO development. | + | SVN Client 1.7 is recommanded to use for AOO development. It's strongly recommended use alternative name for svn's subcommand, like co-checkout, ci-commit, up-update, di-diff, and so on. |
__TOC__ | __TOC__ | ||
Line 11: | Line 11: | ||
<source lang="bash"> | <source lang="bash"> | ||
− | svn co https://svn.apache.org/repos/asf/ | + | svn co https://svn.apache.org/repos/asf/openoffice/trunk aoo |
</source> | </source> | ||
Line 17: | Line 17: | ||
<source lang="bash"> | <source lang="bash"> | ||
− | svn co https://svn.apache.org/repos/asf/ | + | svn co https://svn.apache.org/repos/asf/openoffice/branches/AOO410 aoo410 |
</source> | </source> | ||
Line 23: | Line 23: | ||
<source lang="bash"> | <source lang="bash"> | ||
− | svn co https://svn.apache.org/repos/asf/ | + | svn co https://svn.apache.org/repos/asf/openoffice/branches/AOO410/main/sw sw |
</source> | </source> | ||
− | This gets the source code for sw | + | This gets the source code for Writer module (named "sw") from the AOO410 branch |
*Get the latest changes into your working copy | *Get the latest changes into your working copy | ||
Line 41: | Line 41: | ||
svn log<br /> | svn log<br /> | ||
− | + | svn log filename | |
− | + | ||
− | svn log filename | + | |
− | *Check changes and create a patch from a specific revision | + | Also show information about the paths that were changed in each displayed revision. |
+ | svn log -v | ||
+ | |||
+ | Show for specific revision. | ||
+ | svn log -r m | ||
+ | |||
+ | *Organize logical changes by changelist | ||
+ | Use cl instead of changelist for convenience. | ||
+ | |||
+ | svn changelist tocload-feature filename1 filename2 ... | ||
+ | |||
+ | *Check changes and create a patch from local changes | ||
+ | When creating patch, combine all your changes into a patch. | ||
+ | |||
+ | The path in patch should at least start in "main" or top directory. | ||
+ | |||
+ | svn diff filename1 filename2 > n.patch | ||
+ | |||
+ | *Create patch from a specific revision: | ||
svn diff -c m > n.patch | svn diff -c m > n.patch | ||
Line 54: | Line 70: | ||
instead. | instead. | ||
− | * | + | *Discard local changes and revert to unmodified state |
− | svn | + | svn revert |
==Write access== | ==Write access== | ||
+ | *Apply patch when review other's code change | ||
+ | Make sure current directory is consistent with path in patch, like "main". | ||
+ | |||
+ | svn patch n.patch | ||
+ | |||
+ | Reverse patch: | ||
+ | |||
+ | svn patch --reverse-diff n.patch | ||
+ | |||
*Check changes before committing them | *Check changes before committing them | ||
Line 70: | Line 95: | ||
svn commit -m "comment" [filenames] | svn commit -m "comment" [filenames] | ||
+ | svn commit -m "comment" --changelist tocload-feature | ||
*Committing a patch | *Committing a patch | ||
Line 82: | Line 108: | ||
and then commit it by running either | and then commit it by running either | ||
svn commit -F mychangelog.txt [filenames] | svn commit -F mychangelog.txt [filenames] | ||
+ | svn commit -F mychangelog.txt --changelist tocload-feature | ||
*Update Bugzilla | *Update Bugzilla | ||
Line 87: | Line 114: | ||
== Working with a branch == | == Working with a branch == | ||
− | There at least two situations that you need work with a branch. | + | There at least two situations that you need to work with a branch. |
* If the changes you are about to make are complicated or you want to share them with others during development. | * If the changes you are about to make are complicated or you want to share them with others during development. | ||
Line 99: | Line 126: | ||
<source lang="bash"> | <source lang="bash"> | ||
− | svn copy https://svn.apache.org/repos/asf/ | + | svn copy https://svn.apache.org/repos/asf/openoffice/trunk \ |
− | https://svn.apache.org/repos/asf/ | + | https://svn.apache.org/repos/asf/openoffice/branches/tocloading \ |
-m "Creating a private branch for toc loading of word document." | -m "Creating a private branch for toc loading of word document." | ||
</source> | </source> | ||
Line 124: | Line 151: | ||
==Reference== | ==Reference== | ||
+ | SVN Basics | ||
+ | http://openoffice.apache.org/svn-basics.html | ||
+ | |||
A guide for new committers: | A guide for new committers: | ||
http://www.apache.org/dev/new-committers-guide.html | http://www.apache.org/dev/new-committers-guide.html | ||
Line 135: | Line 165: | ||
SVN Best Practices | SVN Best Practices | ||
http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html | http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html | ||
+ | |||
[[Category:Documentation]] | [[Category:Documentation]] |
Latest revision as of 13:37, 24 March 2014
This page is under review. This line will be removed after it is done.
This page gathered svn practices frequently used by contributors and committers. If you have any advice to this page, please feel free to update it or discuss your idea in ooo-dev mail list.
SVN Client 1.7 is recommanded to use for AOO development. It's strongly recommended use alternative name for svn's subcommand, like co-checkout, ci-commit, up-update, di-diff, and so on.
Read-only access
- Grab the whole source code from main trunk
svn co https://svn.apache.org/repos/asf/openoffice/trunk aoo
- Grab a branch
svn co https://svn.apache.org/repos/asf/openoffice/branches/AOO410 aoo410
- Grab a specific directory from a branch
svn co https://svn.apache.org/repos/asf/openoffice/branches/AOO410/main/sw sw
This gets the source code for Writer module (named "sw") from the AOO410 branch
- Get the latest changes into your working copy
Change into the working directory such as aoo or sw for the above case and run
svn update
This command will merge the public changes with the local changes if there are any.
- Update to a specific revision
svn update -r xxxx
- Check changes history
svn log
svn log filename
Also show information about the paths that were changed in each displayed revision.
svn log -v
Show for specific revision.
svn log -r m
- Organize logical changes by changelist
Use cl instead of changelist for convenience.
svn changelist tocload-feature filename1 filename2 ...
- Check changes and create a patch from local changes
When creating patch, combine all your changes into a patch.
The path in patch should at least start in "main" or top directory.
svn diff filename1 filename2 > n.patch
- Create patch from a specific revision:
svn diff -c m > n.patch
- For changes consisting of many revisions n..m use
svn diff -r m:n > n.patch
instead.
- Discard local changes and revert to unmodified state
svn revert
Write access
- Apply patch when review other's code change
Make sure current directory is consistent with path in patch, like "main".
svn patch n.patch
Reverse patch:
svn patch --reverse-diff n.patch
- Check changes before committing them
svn status
and / or
svn diff svn diff --changelist tocload-feature
- Commit your changes
Don't forget to specify the list of files/dirs that are changed to avoid accidentally committing unwanted changes.
svn commit -m "comment" [filenames] svn commit -m "comment" --changelist tocload-feature
- Committing a patch
Prepare a commit-comment file (e.g. mychangelog.txt) by using the relevant parts of this template:
Patch by: Suggested by: Found by: Review by: Tested by:
and then commit it by running either
svn commit -F mychangelog.txt [filenames] svn commit -F mychangelog.txt --changelist tocload-feature
- Update Bugzilla
Update bugzilla with revision information for cross reference when you are done with the commit and know the revision numbers.
Working with a branch
There at least two situations that you need to work with a branch.
- If the changes you are about to make are complicated or you want to share them with others during development.
- There are interesting upstream branches created by others. For example, after AOO 3.4 is released, a branch for the AOO 3.4.x micro releases was created.
Instead of doing 'svn commit' both on trunk and the release branch use 'svn merge' if your fix needs to be submitted to both code lines.
There are also other cases in which you don't want to commit in development mainline directly.
- How to create a branch
svn copy https://svn.apache.org/repos/asf/openoffice/trunk \ https://svn.apache.org/repos/asf/openoffice/branches/tocloading \ -m "Creating a private branch for toc loading of word document."
- Keep a branch in sync
Subversion is aware of the history of your branch and knows when it split away from the mainline. To perform a sync merge, first make sure your working copy of the branch is “clean”—that it has no local modifications reported by 'svn status'. Then simply run:
$ pwd /home/user/tocloading $ svn merge ^/ooo/trunk
- Reintegrate a branch
When your new feature is done. It needs to be merged back to mainline. Before do that, sync the brache with mainline and commit your changes. Then
$ svn merge --reintegrate ^/ooo/branches/tocloading
and commit again
- Remove a branch
Once a branch is integrated back it has become useless and can be removed.
$ svn delete ^/ooo/branches/tocloading -m "Remove branch of toc loading"
Reference
SVN Basics http://openoffice.apache.org/svn-basics.html
A guide for new committers: http://www.apache.org/dev/new-committers-guide.html
Merge Instruction from FreeBSD: http://wiki.freebsd.org/SubversionPrimer/Merging
SVN book: http://svnbook.red-bean.com/en/1.7/svn-book.html
SVN Best Practices http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html