{"id":2307,"date":"2015-05-25T08:00:07","date_gmt":"2015-05-25T07:00:07","guid":{"rendered":"http:\/\/www.diogonunes.com\/blog\/?p=2307"},"modified":"2020-05-15T14:23:49","modified_gmt":"2020-05-15T13:23:49","slug":"create-update-and-merge-branches-svn","status":"publish","type":"post","link":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/","title":{"rendered":"Create, update and merge branches in SVN"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?resize=580%2C348\" alt=\"delete-old-git-branches-already-merged-into-master\" width=\"580\" height=\"348\" class=\"aligncenter size-full wp-image-2311\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?w=1000&amp;ssl=1 1000w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?resize=400%2C240&amp;ssl=1 400w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<p>If you don&#8217;t know what branches are and why they&#8217;re used for, read <a href=\"http:\/\/guides.beanstalkapp.com\/version-control\/branching-best-practices.html\">this<\/a> first.<\/p>\n<h2>Creation<\/h2>\n<p>First make sure your project follows the standard SVN folder structure, i.e. the <code>trunk<\/code>, <code>tags<\/code> and <code>branches<\/code> folders. All your code, resources, dependencies, and everything else you might need to compile a version of your software should live inside the <code>trunk<\/code> folder.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-1.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-1.png?resize=580%2C197\" alt=\"svn-branch-1\" width=\"580\" height=\"197\" class=\"aligncenter size-full wp-image-2326\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-1.png?w=929&amp;ssl=1 929w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-1.png?resize=400%2C136&amp;ssl=1 400w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>Before creating a branch, perform an update on your <code>trunk<\/code> folder and commit all pending changes. If your using Tortoise SVN a green checkmark overlay should appear on your folder. You&#8217;re ready to branch your <code>trunk<\/code>!<\/p>\n<ol>\n<li>Select your <code>trunk<\/code> folder.<\/li>\n<li>\n<p>Click and hold the right mouse button and drag it over to <code>branches<\/code>. If done correctly, a cascade menu will appear. Select <strong>SVN Copy and rename versioned item here<\/strong>. <a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-2.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-2.png?resize=580%2C226\" alt=\"svn-branch-2\" width=\"580\" height=\"226\" class=\"aligncenter size-full wp-image-2327\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-2.png?w=927&amp;ssl=1 927w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-2.png?resize=400%2C156&amp;ssl=1 400w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<\/li>\n<li>\n<p>Then you&#8217;ll be asked to name the new folder (actually you&#8217;re naming the branch). Use any convention you like &#8212; maybe <code>feature-Ticket12345<\/code> or something more human-readable as <code>fix-CrashAfterEmptyInput<\/code>. I like to use prefixes, such as <code>feat<\/code> for features, <code>fix<\/code> for bug corrections, and <code>ui<\/code> for user interface tweaks.<\/p>\n<\/li>\n<li>\n<p>At this time, you have a full copy of your <code>trunk<\/code> folder at <code>branches\/your-branch-name<\/code>. To add it to your SVN just right-click it and commit. Don&#8217;t forget to ignore build-generated files.<\/p>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-3.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-3.png?resize=580%2C459\" alt=\"svn-branch-3\" width=\"580\" height=\"459\" class=\"aligncenter size-full wp-image-2328\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-3.png?w=691&amp;ssl=1 691w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-3.png?resize=400%2C317&amp;ssl=1 400w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<h2>Usage<\/h2>\n<p>A branch is just a parallel copy of <code>trunk<\/code>. Your branch is <strong>isolated<\/strong> from the <code>trunk<\/code> changes and vice-versa. Feel free to develop wild stuff on your branch. At any time, anyone can checkout the <code>trunk<\/code> folder in order to commit or build something and they won&#8217;t get affected by your changes.<\/p>\n<p>Both a team or an individual may work on a branch. If you&#8217;re working alone you don&#8217;t have to worry about locking files, but if two or more developers are working on the same branch, locks work as they did on <code>trunk<\/code>. Keep in mind that locks made on <code>trunk<\/code> do not affect other branches&#8217; locks and vice-versa.<\/p>\n<p>In conclusion, you may lock, commit, or update as you did on any regular <code>trunk<\/code>.<\/p>\n<h2>Keep it up-to-date<\/h2>\n<p>Now this is where it starts getting interesting&#8230; and tricky. Remember the isolation between <code>trunk<\/code> and <code>branches<\/code>? That&#8217;s a (dis)advantage. Sometimes you need to update your branch with the developments made on <code>trunk<\/code>. However, you don&#8217;t want to create a new branch or lose the work\/commits you already have on your branch.<\/p>\n<blockquote>\n<p>Example: You&#8217;re working on translating your application. Someone commits on <code>trunk<\/code> new forms. Those forms need to be translated too, but when you created your branch they didn&#8217;t exist. How can your branch receive those new forms (commits) without ruining your work?<\/p>\n<\/blockquote>\n<p><strong>Updating your branch with the most recent version of <code>trunk<\/code> is called &#8220;merge&#8221; on SVN<\/strong>, while <a href=\"https:\/\/git-scm.com\/\">git<\/a> calls this process <a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Git-Branching-Rebasing\">rebasing<\/a>. For newcomers this may cause confusion since &#8220;merge&#8221; is also what you do when you definitively integrate your branch into trunk. Right now you&#8217;re not actually merging anything definitively &#8212; you&#8217;re just &#8220;updating&#8221;, like you did when you were at <code>trunk<\/code>.<\/p>\n<ol>\n<li>Ensure your branch does not have uncommitted changes.<\/li>\n<li>Right-click over the branch folder you want to update (not the parent <code>branches<\/code> folder). Select <strong>TortoiseSVN > Merge&#8230;<\/strong>.<\/li>\n<li>A wizard window will appear.\n<ol>\n<li>Select <strong>Merge a range of revisions<\/strong>. Next.<\/li>\n<li>On <strong>URL to merge from<\/strong> type the URL to the <code>trunk<\/code> folder. Then select <strong>All revisions<\/strong>, since you want to update your branch with all revisions of <code>trunk<\/code> since your last update. Next.<\/li>\n<li>At merge options you&#8217;ll probably want to leave all the defaults. You can press <strong>Test merge<\/strong> to do just that &#8212; TortoiseSVN will give you a preview of the actions that will be applied during the merge (add, remove, update, conflict), without changing any local or remote files.<\/li>\n<li>If you&#8217;re comfortable, do it, press <strong>Merge<\/strong>.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-6.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-6.png?resize=580%2C290\" alt=\"svn-branch-6\" width=\"580\" height=\"290\" class=\"aligncenter size-full wp-image-2320\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-6.png?w=962&amp;ssl=1 962w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-6.png?resize=400%2C200&amp;ssl=1 400w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>At this point, your local branch is a merge between what you had and the latest developments on <code>trunk<\/code>. You may want to run a couple of tests just to guarantee that SVN&#8217;s auto-merge didn&#8217;t break anything. If your merge produced conflicts and you had to manually resolve them, them YOU MUST test all code involved in those conflicts. You&#8217;ll thank me later.<\/p>\n<p>Your branch continues equally awesome after the merge? Great, then it&#8217;s time to commit your branch, and continue your work. TortoiseSVN will even suggest a commit message, a concatenation of messages from the commits that you just finished merging.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-7.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-7.png?resize=580%2C424\" alt=\"svn-branch-7\" width=\"580\" height=\"424\" class=\"aligncenter size-full wp-image-2321\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-7.png?w=738&amp;ssl=1 738w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-7.png?resize=400%2C293&amp;ssl=1 400w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p><strong>The more often you merge<\/strong> with <code>trunk<\/code>, the less code you&#8217;ll have to merge each time, thus reducing the probability and complexity of conflicts.<\/p>\n<h2>Integrating a branch into trunk<\/h2>\n<p>The time has come. You developed and tested an awesome feature at your branch in (almost) complete isolation. Now it&#8217;s time to merge those equally awesome lines of code into the <code>trunk<\/code>. The process is basically the same as updating a branch, except this time you&#8217;re <strong>updating your <code>trunk<\/code> with the commits of your branch<\/strong>.<\/p>\n<ol>\n<li>Ensure your <code>trunk<\/code> does not have uncommitted changes. And that you finished working on your branch. And that you just finished updating your branch with the latest version of trunk. And that the stars are all aligned.<\/li>\n<li>Right-click over the <code>trunk<\/code> folder. Select <strong>TortoiseSVN > Merge&#8230;<\/strong>.<\/li>\n<li>A wizard window will appear.\n<ol>\n<li>Select <strong>Merge a range of revisions<\/strong>. Next.<\/li>\n<li>On <strong>URL to merge from<\/strong> type the URL to a specific branch folder. Then select <strong>All revisions<\/strong>. Next.<\/li>\n<li>At merge options leave the defaults.<\/li>\n<li>Press <strong>Merge<\/strong>.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Like when updating your branch, your local <code>trunk<\/code> is now a merge between what it had and your branch&#8217;s developments. Since this is the <code>trunk<\/code>, run all necessary tests before commiting. After commiting your new <code>trunk<\/code> you may safely delete your branch. If you find a bug, just create a new branch and repeat the process.<\/p>\n<h2>Conflicts<\/h2>\n<p>Conflicts are the flavor of life. Imagine Lord of the Rings without the all those ugly orcs and Uruk-Hais &#8212; pretty tasteless right? A conflict happens when you and someone else edit the same line of code differently. The next time you try to merge both code sources a conflict will arise, since SVN doesn&#8217;t know which line of code to use. Who&#8217;s right? Your line or your colleague&#8217;s?<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-8.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-8.png?resize=580%2C323\" alt=\"svn-branch-8\" width=\"580\" height=\"323\" class=\"aligncenter size-full wp-image-2322\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-8.png?w=1067&amp;ssl=1 1067w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-8.png?resize=400%2C223&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-8.png?resize=1024%2C571&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>In this cases you have to manually resolve the conflict. That means reviewing the file where the conflict happened and choose which version is legit. In this example, I made a change on <code>trunk<\/code> and a different change at the same line on <code>branches<\/code>. When I tried to merge the branch into the <code>trunk<\/code> this happened:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-9.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-9.png?resize=580%2C288\" alt=\"svn-branch-9\" width=\"580\" height=\"288\" class=\"aligncenter size-full wp-image-2323\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-9.png?w=961&amp;ssl=1 961w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-9.png?resize=400%2C199&amp;ssl=1 400w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>SVN tried its best to merge the files but we ended up with two conflicting files. Time to put on the gloves and click <strong>Edit conflict<\/strong>. TortoiseSVN will open a 3-pane window with your local version (mine), the repository version (theirs), and the merged file preview.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-10.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-10.png?resize=580%2C301\" alt=\"svn-branch-10\" width=\"580\" height=\"301\" class=\"aligncenter size-full wp-image-2324\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-10.png?w=1680&amp;ssl=1 1680w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-10.png?resize=400%2C208&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-10.png?resize=1024%2C532&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-10.png?resize=1272%2C661&amp;ssl=1 1272w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-10.png?w=1160&amp;ssl=1 1160w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>Focus only on conflicts by navigating using the <strong>Previous\/Next conflict arrows<\/strong>. Have a look at the <strong>Merged pane<\/strong> (bottom). SVN is telling that line <code>this.lblRepo.Text = \"you're at TRUNK\";<\/code> was removed and replaced by&#8230; well, SVN needs help deciding, it has two possible candidates, as you can see in the <strong>Theirs pane<\/strong> (left) and <strong>Mine pane<\/strong> (right).<\/p>\n<p>You can either right-click the line full of <code>???????????????????????<\/code> or press the <strong>Use block<\/strong> button located at the Ribbon. Both will allow you to specify which block of code to use. In this case, I decided to <strong>Use text block from &#8216;mine&#8217;<\/strong> (since after the merge I&#8217;ll be on trunk, so that&#8217;s the message I want to keep).<\/p>\n<p>After you resolve the file&#8217;s conflicts you can press <strong>Save<\/strong> and close the window. You will return to the SVN dialog box where you decided to edit the conflict, except this time you&#8217;ll click <strong>Resolved<\/strong>. Rinse and repeat for the remaining files with conflicts.<\/p>\n<p>Remember to test your code after a manual merge.<\/p>\n<h2>Conclusion<\/h2>\n<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-11.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-11.png?resize=529%2C374\" alt=\"svn-branch-11\" width=\"529\" height=\"374\" class=\"aligncenter size-full wp-image-2325\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-11.png?w=529&amp;ssl=1 529w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/svn-branch-11.png?resize=400%2C283&amp;ssl=1 400w\" sizes=\"auto, (max-width: 529px) 100vw, 529px\" \/><\/a><\/p>\n<p>Mission accomplished.<\/p>\n<p>What started as a green window is now blue, and the developers working at <code>trunk<\/code> were never disturbed by intermediate or unstable commits &#8212; all thanks to the power of branches.<\/p>\n<p>As a last step you should delete the branch. Its code is already on <code>trunk<\/code>, its revision history on SVN, so you no longer need it. Delete it now and avoid confusions later.<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":2311,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2],"tags":[29,52,31],"class_list":["post-2307","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-coding","tag-source-control","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Create, update and merge branches in SVN - The Geeky Gecko<\/title>\n<meta name=\"description\" content=\"This tutorial will guide you through the complete lifecycle of a Subversion branch, full of examples and screens, including how to resolve conflicts.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create, update and merge branches in SVN - The Geeky Gecko\" \/>\n<meta property=\"og:description\" content=\"This tutorial will guide you through the complete lifecycle of a Subversion branch, full of examples and screens, including how to resolve conflicts.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/\" \/>\n<meta property=\"og:site_name\" content=\"The Geeky Gecko\" \/>\n<meta property=\"article:published_time\" content=\"2015-05-25T07:00:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-15T13:23:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Diogo Nunes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:site\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diogo Nunes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/\"},\"author\":{\"name\":\"Diogo Nunes\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"headline\":\"Create, update and merge branches in SVN\",\"datePublished\":\"2015-05-25T07:00:07+00:00\",\"dateModified\":\"2020-05-15T13:23:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/\"},\"wordCount\":1341,\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1\",\"keywords\":[\"coding\",\"source control\",\"tutorial\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/\",\"name\":\"Create, update and merge branches in SVN - The Geeky Gecko\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1\",\"datePublished\":\"2015-05-25T07:00:07+00:00\",\"dateModified\":\"2020-05-15T13:23:49+00:00\",\"description\":\"This tutorial will guide you through the complete lifecycle of a Subversion branch, full of examples and screens, including how to resolve conflicts.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1\",\"width\":1000,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.diogonunes.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create, update and merge branches in SVN\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/\",\"name\":\"The Geeky Gecko\",\"description\":\"The Geeky Gecko\",\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\",\"name\":\"Diogo Nunes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"width\":799,\"height\":799,\"caption\":\"Diogo Nunes\"},\"logo\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.diogonunes.com\",\"https:\/\/x.com\/dialexnunes\"],\"url\":\"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Create, update and merge branches in SVN - The Geeky Gecko","description":"This tutorial will guide you through the complete lifecycle of a Subversion branch, full of examples and screens, including how to resolve conflicts.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/","og_locale":"en_US","og_type":"article","og_title":"Create, update and merge branches in SVN - The Geeky Gecko","og_description":"This tutorial will guide you through the complete lifecycle of a Subversion branch, full of examples and screens, including how to resolve conflicts.","og_url":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/","og_site_name":"The Geeky Gecko","article_published_time":"2015-05-25T07:00:07+00:00","article_modified_time":"2020-05-15T13:23:49+00:00","og_image":[{"width":1000,"height":600,"url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1","type":"image\/jpeg"}],"author":"Diogo Nunes","twitter_card":"summary_large_image","twitter_creator":"@dialexnunes","twitter_site":"@dialexnunes","twitter_misc":{"Written by":"Diogo Nunes","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#article","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/"},"author":{"name":"Diogo Nunes","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"headline":"Create, update and merge branches in SVN","datePublished":"2015-05-25T07:00:07+00:00","dateModified":"2020-05-15T13:23:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/"},"wordCount":1341,"publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1","keywords":["coding","source control","tutorial"],"articleSection":["Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/","url":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/","name":"Create, update and merge branches in SVN - The Geeky Gecko","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#primaryimage"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1","datePublished":"2015-05-25T07:00:07+00:00","dateModified":"2020-05-15T13:23:49+00:00","description":"This tutorial will guide you through the complete lifecycle of a Subversion branch, full of examples and screens, including how to resolve conflicts.","breadcrumb":{"@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#primaryimage","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1","width":1000,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/www.diogonunes.com\/blog\/create-update-and-merge-branches-svn\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.diogonunes.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Create, update and merge branches in SVN"}]},{"@type":"WebSite","@id":"https:\/\/www.diogonunes.com\/blog\/#website","url":"https:\/\/www.diogonunes.com\/blog\/","name":"The Geeky Gecko","description":"The Geeky Gecko","publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c","name":"Diogo Nunes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","width":799,"height":799,"caption":"Diogo Nunes"},"logo":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.diogonunes.com","https:\/\/x.com\/dialexnunes"],"url":"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/05\/delete-old-git-branches-already-merged-into-master.jpeg?fit=1000%2C600&ssl=1","jetpack-related-posts":[{"id":1770,"url":"https:\/\/www.diogonunes.com\/blog\/embed-svns-revision-into-assemblyinfos-version-number\/","url_meta":{"origin":2307,"position":0},"title":"Embed SVN&#8217;s revision into AssemblyInfo&#8217;s version number","author":"Diogo Nunes","date":"9 February, 2015","format":false,"excerpt":"Automatically sync the two numbers on each build. Recall that version numbers are of the form Major.Minor.BuildDay.BuildTime. For quite some time I used Visual Studio's auto-generated build numbers. Basically you edit your project's AssemblyVersion.cs to [assembly : AssemblyVersion(\"X.Y.*\")] and, every time you build your project, your binaries get stamped with\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/12\/tortoise-visualstudio.png?fit=640%2C367&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/12\/tortoise-visualstudio.png?fit=640%2C367&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/12\/tortoise-visualstudio.png?fit=640%2C367&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":2473,"url":"https:\/\/www.diogonunes.com\/blog\/fix-texture-problems-gmod\/","url_meta":{"origin":2307,"position":1},"title":"How to fix texture problems (pink squares) on Garry&#8217;s Mod","author":"Diogo Nunes","date":"4 January, 2016","format":false,"excerpt":"If you try to play Garry's Mod right after you download and install it you'll have a bad time. If you join a multiplayer map you will most probably see the whole map covered on bright fuchsia\/pink and black squares and ERROR messages. That's because the map requires textures not\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"gmod textures error","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/12\/maxresdefault.jpg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/12\/maxresdefault.jpg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/12\/maxresdefault.jpg?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/12\/maxresdefault.jpg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/12\/maxresdefault.jpg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":868,"url":"https:\/\/www.diogonunes.com\/blog\/download-counter-for-your-websites-files\/","url_meta":{"origin":2307,"position":2},"title":"Download counter for your website&#8217;s files","author":"Diogo Nunes","date":"23 June, 2014","format":false,"excerpt":"A download counter not only provides you useful metrics but also gives your visitors a hint about the most popular files. If you offer your visitors files to download you may want to count how many times each file is download. I use CCounter, a PHP Click Counter to count\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/smiirl-fliike-e1411919272213.jpg?fit=1200%2C501&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/smiirl-fliike-e1411919272213.jpg?fit=1200%2C501&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/smiirl-fliike-e1411919272213.jpg?fit=1200%2C501&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/smiirl-fliike-e1411919272213.jpg?fit=1200%2C501&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/smiirl-fliike-e1411919272213.jpg?fit=1200%2C501&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":442,"url":"https:\/\/www.diogonunes.com\/blog\/upgrading-your-play-app-to-a-newer-version\/","url_meta":{"origin":2307,"position":3},"title":"Upgrading your Play app to a newer version","author":"Diogo Nunes","date":"31 March, 2014","format":false,"excerpt":"Let's assume you have an existing app using Play! 2.1.A and a 2.1.B version was released. You want to update your environment to use that new release. Note: This tutorial was tested to be working with 2.1.* versions; A and B are two arbitrary numbers. Updating environment Like when installing\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-2.png?fit=1143%2C431&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-2.png?fit=1143%2C431&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-2.png?fit=1143%2C431&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-2.png?fit=1143%2C431&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-2.png?fit=1143%2C431&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2444,"url":"https:\/\/www.diogonunes.com\/blog\/install-config-gmod-guide\/","url_meta":{"origin":2307,"position":4},"title":"Download Garry&#8217;s Mod and configure it (complete guide)","author":"Diogo Nunes","date":"25 December, 2015","format":false,"excerpt":"Garry's Mod (commonly abbreviated as gmod), is a sandbox physics game created by Garry Newman. It was originally a mod for Valve's Half-Life 2, but was later made into a standalone release in 2006. Currently it's a fun game to play with friends :) \ud83d\uded1\u26a0\ufe0f EDIT: This guide was written\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"gmod","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/12\/bb622eefffd0fb307531c75da7dc1768.jpg?fit=800%2C450&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/12\/bb622eefffd0fb307531c75da7dc1768.jpg?fit=800%2C450&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/12\/bb622eefffd0fb307531c75da7dc1768.jpg?fit=800%2C450&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/12\/bb622eefffd0fb307531c75da7dc1768.jpg?fit=800%2C450&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":2718,"url":"https:\/\/www.diogonunes.com\/blog\/internet-button-tutorial-click-button\/","url_meta":{"origin":2307,"position":5},"title":"Internet Button: push my buttons (tutorial #3)","author":"Diogo Nunes","date":"27 February, 2017","format":false,"excerpt":"Assign a different action to each button. Particle released a C++ library that handles much of the interaction with the Internet Button hardware components. That lib is publicly available on GitHub and includes a bunch of useful examples. To check if a button was pressed becomes as easy as buttonOn(led_number).\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial3.jpg?fit=984%2C656&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial3.jpg?fit=984%2C656&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial3.jpg?fit=984%2C656&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial3.jpg?fit=984%2C656&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/2307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/comments?post=2307"}],"version-history":[{"count":1,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/2307\/revisions"}],"predecessor-version":[{"id":3233,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/2307\/revisions\/3233"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media\/2311"}],"wp:attachment":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media?parent=2307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/categories?post=2307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/tags?post=2307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}