{"action":"created","comment":{"url":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments/67444163","id":67444163,"diff_hunk":"@@ -2,98 +2,303 @@\n ==  Migration\n {inall}\n \n-\n [[migration-introduction]]\n === Introduction\n \n-You can install {oss} on a new server or even the same server and run it in parallel. This gives you \n-access to the new repository formats and features without interrupting your tested and proven {oss} 2 deployment. \n+The migration tool provides a built-in supported method for migrating components from {pro} 2 to {pro} {version}. \n+You will be able to initiate a migration into version 3 with a wizard available in application.\n \n-////\n-Expand intro; Topics and headers subject to change\n-////\n+This feature helps you build a migration plan which allows {pro} {version} to talk to {pro} 2 by way of a \n+capability that initiates a wizard. Migration moves content from version 2 to version 3, and wizard \n+enables you to view the status of the migration as it is happening.\n \n-[[migration-configuration]]\n-=== Migration Configuration\n+During a migration, {pro} 2 should remain functioning at high capacity during the majority of the migration \n+process. You or your organization should put strong emphasis on performance and stability when designing the \n+migration process.\n+\n+[[migration-support]]\n+=== Supported Architecture for Migration\n+\n+There are two available architectures that support migration. You can either move content from a running \n+instance of versions 2 to 3 on an external server, or you can use the same server and run it in parallel.\n+\n+[[migration-prep]]\n+=== Preparing for Migration\n+\n+If you decide to update version 2 and 3 to the most migration-compatible instances, the most critical decisions \n+you or your organization make around the migration plan should include: \n+\n+* where they want their files to be transferred to when the migration is complete\n+* which of the two architectures would best suit you migration plan\n+* designating a maintenance window for {pro} 2 so you can take it down for a period, and the migration can \n+persist\n+* how your system storage is structured and what ingestion methods are available to them\n+\n+With the migration tool the expectation is that {pro} 3 can migrate content from one instance of {pro} 2 at a \n+time. The tool can migrate content from your choice of download, hard linking, or copying local files.\n+\n+[[migration-performance]]\n+==== Performance and Tuning for Migration\n+\n+There are several ways to configure {pro) 2 Further, you should review your current {pro} 2 \n+configuration to clean up content within the repository manaager that may impact overall performance.\n+\n+When considering migration time and speed, take into account all enabled scheduled tasks on your version 2 \n+instance. Depending on your {pro} 2 instance configuration you can optimize the performance of the application by:\n+\n+* disabling system feeds\n+* disabling repair tasks\n+* reviewing and disabling Rebuild Maven Metadata files\n+* reviewing Custom Metadata\n+* removing unused snapshots\n+* dropping stale staging repositories\n+* removing old release tasks not in use\n+* removing repositories no longer supported by the repository manager (e.g. \n+https://support.sonatype.com/hc/en-us/articles/217611787-codehaus-org-Repositories-Should-Be-Removed-From-Your-Nexus-Instance[Codehaus repositories])\n+\n+To lift the burden of certain space-consuming tasks, above, you could change the maximum of the open files count \n+per process. Increasing file handles is necessary if you plan to migrate components from version 2 to 3 on the \n+same system. Another factor, the quality of your network, will arbitrarily impact the speed of ingestion methods \n+(e.g HTTP download).\n+\n+[[migration-file-systems]]\n+==== File System Considerations\n+\n+{pro} {version} uses blob stores to store components. As mentioned in <<admin-repository-blobstores,Chapter 4>> \n+you can create new ones as well as determine the amount of space for each, if more than one exists. In \n+version 3, consider how you want to organize this storage mechanism. Components in {pro} 2 are stored as \n+individual files on disk. {pro} {version} stores components as blobs. The conversion process requires the \n+repository manager to iterate every component in your storage. This process will take the bulk of the time \n+required for migration.\n+\n+When migrating, make sure you have enough storage capacity in the destined file system(s). If you are using \n+the hard linking ingestion method, the bytes themselves are not duplicated (saving space), but you must ensure \n+there are enough free inodes for the content being migrated.\n+\n+In the instance you have configured your repository manager HTTP context and path as a reverse proxy server\n+the traffic coming through {pro} 2 could be busy, as you start the migration steps. {pro} 3 starts pulling \n+over the content with the migration tool as content is added to {pro} 2.\n+\n+NOTE: HTTP download puts more load on the version 2 instance than other ingestion methods, because this version \n+has to serve the bytes. Copying and hard linking only have to be told where the file is, and they obtain it from \n+the file system, directly.\n+\n+[[migration-content-prep]]\n+=== Preparing Migration Content\n+\n+*Repository IDs*\n+\n+Though rarely used, {pro} 2 allows you to manage repository ids that differ by case. {pro} {version} does not \n+allow this.\n+\n+Before migrating repositories to {pro} 2, find the repository ids in Nexus 2 that differ, and plan how you will \n+rename any conflicting repositories in {pro} {version}. Contact our https://support.sonatype.com/hc/en-us[support \n+team] to learn on how to do this safely.\n+\n+*User Token*\n+\n+The migration tool can only migrate user tokens from version 2 if the 'Enabled' checkbox is selected. From the \n+'Administration' panel click the 'User Token' tab and enable the setting. This automatically actives 'Realms' in \n+version 3 panel, even if it is inactive.\n+\n+*NuGet API Key*\n+\n+Though your account has only one associated NuGet API key, they are visible per repository.\n+\n+The migration tool will migrate all keys that are present in version 2 when asked, even if the NuGet API Key \n+Realm is not active in version 2, found in Administration -> Server -> Security Settings -> Selected Realms. This \n+is because there is no explicit on or off setting for NuGet keys.\n+\n+[[migration-security]]\n+==== Security and Migration\n+\n+TBD\n \n-Tbd\n ////\n-This section will cover what the user configures the application port as a preliminary step for the migration plan. This section will also provide any commandline, system \n+potential new section\n ////\n \n \n-[[migration-capabililty]]\n-=== Enabling the Migration Capability\n+[[migration-methods]]\n+=== Migration Methods\n+\n+In order to start migration, {pro} 2 has to listen for {pro} 3 to instantiate communication. This is the core \n+property of the 'Migration Agent'. When the migration wizard in version 3 helps you build a migration plan, it \n+talks to your version 2 instance thru the migration agent to find out what repositories exist (e.g. to list them \n+in the wizard user interface). When you pick one, version 3 tells version 2 to start compiling the full list of \n+what it has that needs migrating in each of those repositories. Ultimately, this creates a scheduled task that \n+walks though the repository storage folder, lists the files, then synchronizes them, storing the metadata in the \n+changelog database.\n+\n+On the {pro} {version} side, components are stored as blobs. The conversion process requires the {version} to \n+iterate over every component in your storage.\n+\n+Once the version 2 'Migration Agent' plugin, mentioned in <<migration-start>>, is enabled and both repository \n+manager instances are stood up and communicating, you can consider one of three ingestion methods: HTTP download, \n+file system copying, or hard linking. The choice of ingestion method can be made on a repository-by-repository \n+basis, but there is a migration-wide default.\n+\n+*Downloading*\n \n-To implement migration, a migration-agent capability must be activated for the migration plan to persist. The \n-capability, essentially, finds what repositories exist and lists them in the version 3 migration wizard. It \n-enables the port you configured to run version 2 remotely in order to communicate with version 3. The \n-migration plan, as a whole, is two-part process where version 2 must be set up to listen for a {oss} 3 instance \n-in order for the former to talk to the latter\n+The first option is download, which means {pro} 3 will make HTTP requests to {pro} 2. This is the slowest option \n+for migration. \n \n-[[migration-agent]]\n+If {pro} 2 and {pro} 3 are on different machines and do not share access to the same file system storage, you \n+must use the HTTP download method.\n+\n+*File System Copying*\n+\n+The second option is file system copying. If {pro} 2 and {pro} 3 are on the same machine (or share access to the \n+same file systems) then version 3 will copy the files from version 2. {pro} 2 will tell {pro} 3 the location of \n+the file and where to retrieve the content. \n+\n+Assuming versions 2 and 3 are on the same machine, configured in a way that the mounts are accessible by the same \n+path (from one machine to the other) this option will work. It is a slightly faster process than the download \n+method and has less impact on the performance of {pro} 2\n+\n+*Hard linking*\n+\n+This method only works on the same file system. If you want to hard link, configure your {pro} 3 in such a way \n+that you have a blob store defined in an appropriate location where hard linking is possible.\n+\n+Hard linking repository metadata creates another reference to the same set of bytes somewhere else. If the \n+content set for migration in {pro} 2 is too large for {pro} 3, part of the data will be distributed to cleared \n+data blocks, or elsewhere.\n+\n+Hard links only work across the same file system. If your choose hard linking as your migration method make sure \n+that the {pro} 3 blob store to be used for the repository is on the same file system as the {pro} 2 storage \n+location for that repository.\n+\n+This is the fastest option because you will not have to move the bytes around.\n+\n+[[migration-process-expectations]]\n+=== Migration Process and Expectations\n+\n+While version 2 is stood up repository content is being added, updated, and deleted as the migration is \n+executed. {pro}{version} will pick up these changes. However, configuration changes such as new repositories, \n+realm settings, permissions, roles and role assignments, HTTP config, and ssl certificates should not be changed. \n+After at the migration starts such changes may not be picked up by version 3 and may result in failure.\n+\n+If you are an administrator who manages the migration plan consider updating the {pro} 2 instance to read-only \n+mode so it is inaccessible to users who do not have administrative privileges. This shuts off the flow of new \n+changes, and allows {pro} {version} to catch up with any outstanding content changes made on version 2. Afterward \n+you will be able to re-enable access version 2 of the repository manager as it will subsequently talk to version \n+3.\n+\n+[[migration-repo-support]]\n+=== Repository Format Support\n+\n+Below is a list of repositories available in version 2 and 3 and which are supported by migration. For each of \n+these formats you can migrate server-wide settings, security realm settings, and repository content.\n+\n+.Repository Format Support\n+[width=\"60%\",frame=\"topbot\",options=\"header,footer\"]\n+|============================================\n+|Format   |2.x        | 3.x Support\n+|npm      |yes        | 3.0 and greater\n+|Docker   |no\t      | 3.0 and greater\n+|NuGet    |yes        | 3.0 and greater\n+|Site/Raw |yes        | 3.0 and greater\n+|Maven1   |yes        | \n+|Maven2   |yes        | 3.0*, 3.1 and greater\n+|RubyGems |yes        | 3.1 and greater\n+|Bower    |no         | 3.1 and greater\n+|PyPI     |no         | 3.1 and greater\n+|P2       |yes        | \n+|OBR      |yes        | \n+|Yum      |yes        | \n+|============================================\n+\n+NOTE: The '*' in the list indicates missing advanced features.\n+\n+[[migration-start]]\n+=== Getting Started\n+\n+After considerations around system performance and storage are taken into account, there are a few basics steps \n+to get ready to start migration:\n+\n+* Upgrade Nexus Repository to version 2.14 and configure the included migration capability that allows you to \n+sync from version 2 to {version}.\n+* Install Nexus Repository 3.1 on the same server, ensure it runs on a different port and start it up.\n+* Configure the migration agent in version 2 and start the migration wizard in version 3.\n+\n+{pro} {version} provides a wizard to instruct you through migration in three phases:\n+\n+ * 'Preparing', the phase that prepares the transfer and creation of all the repositories.\n+ * 'Synchronizing', the phase that counts and processes all components of the repositories set for migration.\n+ * 'Finishing', the phase that performs final clean up, then closes the process.\n+\n+To execute the migration plan you must open the connection between version 2 and 3. The connection finds what \n+repositories exist and lists them in the version 3 migration wizard. It enables the port you configured \n+to run version 2 remotely in order to communicate with version 3. The migration plan, as a whole, is two-part \n+process where version 2 must be set up to listen for a {pro} 3 instance in order for the former to talk to the \n+latter.\n+\n+[[migration-configuration]]\n ==== Enabling Migration from Version 2\n \n-In version 2, activate the 'Migration: Agent' capability to open the connection for the migration-agent. Follow these steps:\n+In version 2, activate the 'Migration: Agent' capability to open the connection for the migration-agent. Follow \n+these steps:\n \n * Click 'Administration' in the left-hand panel\n-* Click 'Capabilities' under 'Adminstration' to open the 'Capabilities' panel\n+* Click 'Capabilities' under 'Administration' to open the 'Capabilities' panel\n * Select 'New' to prompt the 'Create new capability' modal\n * Select 'Migration: Agent' as your capability type\n \n In the lower section of 'Capabilities' interface, the repository manager acknowledges the migration-agent as \n 'Active'. \n \n-[[migration-nexus-three]]\n+[[migration-plan]]\n ==== Enabling Migration from Version 3\n \n-Next, sign in to your version 3 instance. At this point, map the <<migration-agent,migration-agent>> \n-endpoint to your version 3 instance so the migration runs on the same server as version 2. Follow these \n-steps to implement the migration plan:\n+Next, sign in to your version 3 instance. You will create a 'Migration' capability to implement the tool. When \n+enabled, the 'Migration' icon appears in the 'Administration' menu, under 'System'. Follow these steps to \n+implement the migration capability:\n \n * Click 'Capabilities', located under 'System', to open the 'Capabilities' screen\n * Click 'Create capability'\n * Select 'Migration', then click 'Create capability' to enable migration\n \n-[[migration-steps]]\n-=== Migrating Repositories\n+[[migration-content]]\n+==== Migrating Content\n \n After you establish migration capabilities for versions 2 and 3, you will activate a wizard to start your \n-migration. Go to the 'Adminstration' menu and select 'Migration', located under \n-'System', to open the wizard.\n+migration. In {pro}{version} go to the 'Administration' menu and select 'Migration', located under 'System', to \n+open the wizard.\n \n-*Wizard*\n+*Migration Wizard*\n \n-Overview:: The wizard will provide and overview of what is permissible for automatic migration as well as \n-warnings on what cannot be migrated. \n+Overview:: The wizard will provide and overview of what is allowed for automatic migration as well as \n+warnings on what cannot be migrated. Click the 'Next' button to get from one page to the next.","path":"chapter-migration.asciidoc","position":302,"original_position":302,"commit_id":"68dbadc6971b14852b4aadc88daaba90a82211a5","original_commit_id":"68dbadc6971b14852b4aadc88daaba90a82211a5","user":{"login":"joedragons","id":9559205,"avatar_url":"https://avatars.githubusercontent.com/u/9559205?v=3","gravatar_id":"","url":"https://api.github.com/users/joedragons","html_url":"https://github.com/joedragons","followers_url":"https://api.github.com/users/joedragons/followers","following_url":"https://api.github.com/users/joedragons/following{/other_user}","gists_url":"https://api.github.com/users/joedragons/gists{/gist_id}","starred_url":"https://api.github.com/users/joedragons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joedragons/subscriptions","organizations_url":"https://api.github.com/users/joedragons/orgs","repos_url":"https://api.github.com/users/joedragons/repos","events_url":"https://api.github.com/users/joedragons/events{/privacy}","received_events_url":"https://api.github.com/users/joedragons/received_events","type":"User","site_admin":false},"body":"Minor: Was initially going to suggest changing \"get from one page to the next.\" to \"proceed.\" however as written there's no further mention of Next buttons so the intent may be to guide thru the entire process.  In that case, (minor) suggest changing \"button\" to \"buttons\".","created_at":"2016-06-16T23:57:51Z","updated_at":"2016-06-16T23:57:51Z","html_url":"https://github.com/sonatype/nexus-book/pull/180#discussion_r67444163","pull_request_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/180","_links":{"self":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments/67444163"},"html":{"href":"https://github.com/sonatype/nexus-book/pull/180#discussion_r67444163"},"pull_request":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/180"}}},"pull_request":{"url":"https://api.github.com/repos/sonatype/nexus-book/pulls/180","id":70014211,"html_url":"https://github.com/sonatype/nexus-book/pull/180","diff_url":"https://github.com/sonatype/nexus-book/pull/180.diff","patch_url":"https://github.com/sonatype/nexus-book/pull/180.patch","issue_url":"https://api.github.com/repos/sonatype/nexus-book/issues/180","number":180,"state":"open","locked":false,"title":"NEXUS-10173 & NEXUS 10222 pre migration & UI docs","user":{"login":"dulanism","id":5214266,"avatar_url":"https://avatars.githubusercontent.com/u/5214266?v=3","gravatar_id":"","url":"https://api.github.com/users/dulanism","html_url":"https://github.com/dulanism","followers_url":"https://api.github.com/users/dulanism/followers","following_url":"https://api.github.com/users/dulanism/following{/other_user}","gists_url":"https://api.github.com/users/dulanism/gists{/gist_id}","starred_url":"https://api.github.com/users/dulanism/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dulanism/subscriptions","organizations_url":"https://api.github.com/users/dulanism/orgs","repos_url":"https://api.github.com/users/dulanism/repos","events_url":"https://api.github.com/users/dulanism/events{/privacy}","received_events_url":"https://api.github.com/users/dulanism/received_events","type":"User","site_admin":false},"body":"JIRA: https://issues.sonatype.org/browse/NEXUS-10173 & https://issues.sonatype.org/browse/NEXUS-10222 - Combining UI & pre-migration docs after preliminary docs for pre-migration were already merged (i.e. https://github.com/sonatype/nexus-book/pull/182)\r\n\r\n**Note: the {pro} macro will be replaced with a new macro {nxrm} though the latter was created after this branch existed. I'll refine the proper macros after review.**","created_at":"2016-05-13T15:28:57Z","updated_at":"2016-06-16T23:57:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d555a2a335cc4dca019d2296f8f36f717922f3b1","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/180/commits","review_comments_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/180/comments","review_comment_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sonatype/nexus-book/issues/180/comments","statuses_url":"https://api.github.com/repos/sonatype/nexus-book/statuses/68dbadc6971b14852b4aadc88daaba90a82211a5","head":{"label":"sonatype:NEXUS-10173-migration-ui-docs","ref":"NEXUS-10173-migration-ui-docs","sha":"68dbadc6971b14852b4aadc88daaba90a82211a5","user":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"repo":{"id":188759,"name":"nexus-book","full_name":"sonatype/nexus-book","owner":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sonatype/nexus-book","description":"Repository Management with Nexus","fork":false,"url":"https://api.github.com/repos/sonatype/nexus-book","forks_url":"https://api.github.com/repos/sonatype/nexus-book/forks","keys_url":"https://api.github.com/repos/sonatype/nexus-book/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sonatype/nexus-book/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sonatype/nexus-book/teams","hooks_url":"https://api.github.com/repos/sonatype/nexus-book/hooks","issue_events_url":"https://api.github.com/repos/sonatype/nexus-book/issues/events{/number}","events_url":"https://api.github.com/repos/sonatype/nexus-book/events","assignees_url":"https://api.github.com/repos/sonatype/nexus-book/assignees{/user}","branches_url":"https://api.github.com/repos/sonatype/nexus-book/branches{/branch}","tags_url":"https://api.github.com/repos/sonatype/nexus-book/tags","blobs_url":"https://api.github.com/repos/sonatype/nexus-book/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sonatype/nexus-book/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sonatype/nexus-book/git/refs{/sha}","trees_url":"https://api.github.com/repos/sonatype/nexus-book/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sonatype/nexus-book/statuses/{sha}","languages_url":"https://api.github.com/repos/sonatype/nexus-book/languages","stargazers_url":"https://api.github.com/repos/sonatype/nexus-book/stargazers","contributors_url":"https://api.github.com/repos/sonatype/nexus-book/contributors","subscribers_url":"https://api.github.com/repos/sonatype/nexus-book/subscribers","subscription_url":"https://api.github.com/repos/sonatype/nexus-book/subscription","commits_url":"https://api.github.com/repos/sonatype/nexus-book/commits{/sha}","git_commits_url":"https://api.github.com/repos/sonatype/nexus-book/git/commits{/sha}","comments_url":"https://api.github.com/repos/sonatype/nexus-book/comments{/number}","issue_comment_url":"https://api.github.com/repos/sonatype/nexus-book/issues/comments{/number}","contents_url":"https://api.github.com/repos/sonatype/nexus-book/contents/{+path}","compare_url":"https://api.github.com/repos/sonatype/nexus-book/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sonatype/nexus-book/merges","archive_url":"https://api.github.com/repos/sonatype/nexus-book/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sonatype/nexus-book/downloads","issues_url":"https://api.github.com/repos/sonatype/nexus-book/issues{/number}","pulls_url":"https://api.github.com/repos/sonatype/nexus-book/pulls{/number}","milestones_url":"https://api.github.com/repos/sonatype/nexus-book/milestones{/number}","notifications_url":"https://api.github.com/repos/sonatype/nexus-book/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sonatype/nexus-book/labels{/name}","releases_url":"https://api.github.com/repos/sonatype/nexus-book/releases{/id}","deployments_url":"https://api.github.com/repos/sonatype/nexus-book/deployments","created_at":"2009-04-29T20:25:10Z","updated_at":"2016-05-10T00:52:42Z","pushed_at":"2016-06-16T15:55:57Z","git_url":"git://github.com/sonatype/nexus-book.git","ssh_url":"git@github.com:sonatype/nexus-book.git","clone_url":"https://github.com/sonatype/nexus-book.git","svn_url":"https://github.com/sonatype/nexus-book","homepage":"http://books.sonatype.com/nexus-book/reference/index.html","size":705426,"stargazers_count":49,"watchers_count":49,"language":"XSLT","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":23,"mirror_url":null,"open_issues_count":3,"forks":23,"open_issues":3,"watchers":49,"default_branch":"master"}},"base":{"label":"sonatype:nexus-3.1.x","ref":"nexus-3.1.x","sha":"b250261eb3a67078aaea35ad375968fece95212d","user":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"repo":{"id":188759,"name":"nexus-book","full_name":"sonatype/nexus-book","owner":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sonatype/nexus-book","description":"Repository Management with Nexus","fork":false,"url":"https://api.github.com/repos/sonatype/nexus-book","forks_url":"https://api.github.com/repos/sonatype/nexus-book/forks","keys_url":"https://api.github.com/repos/sonatype/nexus-book/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sonatype/nexus-book/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sonatype/nexus-book/teams","hooks_url":"https://api.github.com/repos/sonatype/nexus-book/hooks","issue_events_url":"https://api.github.com/repos/sonatype/nexus-book/issues/events{/number}","events_url":"https://api.github.com/repos/sonatype/nexus-book/events","assignees_url":"https://api.github.com/repos/sonatype/nexus-book/assignees{/user}","branches_url":"https://api.github.com/repos/sonatype/nexus-book/branches{/branch}","tags_url":"https://api.github.com/repos/sonatype/nexus-book/tags","blobs_url":"https://api.github.com/repos/sonatype/nexus-book/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sonatype/nexus-book/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sonatype/nexus-book/git/refs{/sha}","trees_url":"https://api.github.com/repos/sonatype/nexus-book/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sonatype/nexus-book/statuses/{sha}","languages_url":"https://api.github.com/repos/sonatype/nexus-book/languages","stargazers_url":"https://api.github.com/repos/sonatype/nexus-book/stargazers","contributors_url":"https://api.github.com/repos/sonatype/nexus-book/contributors","subscribers_url":"https://api.github.com/repos/sonatype/nexus-book/subscribers","subscription_url":"https://api.github.com/repos/sonatype/nexus-book/subscription","commits_url":"https://api.github.com/repos/sonatype/nexus-book/commits{/sha}","git_commits_url":"https://api.github.com/repos/sonatype/nexus-book/git/commits{/sha}","comments_url":"https://api.github.com/repos/sonatype/nexus-book/comments{/number}","issue_comment_url":"https://api.github.com/repos/sonatype/nexus-book/issues/comments{/number}","contents_url":"https://api.github.com/repos/sonatype/nexus-book/contents/{+path}","compare_url":"https://api.github.com/repos/sonatype/nexus-book/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sonatype/nexus-book/merges","archive_url":"https://api.github.com/repos/sonatype/nexus-book/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sonatype/nexus-book/downloads","issues_url":"https://api.github.com/repos/sonatype/nexus-book/issues{/number}","pulls_url":"https://api.github.com/repos/sonatype/nexus-book/pulls{/number}","milestones_url":"https://api.github.com/repos/sonatype/nexus-book/milestones{/number}","notifications_url":"https://api.github.com/repos/sonatype/nexus-book/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sonatype/nexus-book/labels{/name}","releases_url":"https://api.github.com/repos/sonatype/nexus-book/releases{/id}","deployments_url":"https://api.github.com/repos/sonatype/nexus-book/deployments","created_at":"2009-04-29T20:25:10Z","updated_at":"2016-05-10T00:52:42Z","pushed_at":"2016-06-16T15:55:57Z","git_url":"git://github.com/sonatype/nexus-book.git","ssh_url":"git@github.com:sonatype/nexus-book.git","clone_url":"https://github.com/sonatype/nexus-book.git","svn_url":"https://github.com/sonatype/nexus-book","homepage":"http://books.sonatype.com/nexus-book/reference/index.html","size":705426,"stargazers_count":49,"watchers_count":49,"language":"XSLT","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":23,"mirror_url":null,"open_issues_count":3,"forks":23,"open_issues":3,"watchers":49,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/180"},"html":{"href":"https://github.com/sonatype/nexus-book/pull/180"},"issue":{"href":"https://api.github.com/repos/sonatype/nexus-book/issues/180"},"comments":{"href":"https://api.github.com/repos/sonatype/nexus-book/issues/180/comments"},"review_comments":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/180/comments"},"review_comment":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/180/commits"},"statuses":{"href":"https://api.github.com/repos/sonatype/nexus-book/statuses/68dbadc6971b14852b4aadc88daaba90a82211a5"}}}}
{"actor":{"display_login":"joedragons"}}