What Sam said… and…

we have to map a project's internal directory structure but also repository kind and the directory structure around projects.

Imagine you have an SVN repo and a git repo. The svn repo had, say, this structure and a build system that had build files close to the code:

```
${repo_root}/projects/project{1,2,3}/sources/some/package/build_file
${repo_root}/projects/project{1,2,3}/sources/some/package/MyCode.java
```

but you were open-sourcing project1 in its own git repo at

```
${new_repo_root}/build.xml
${new_repo_root}/some/package/MyCode.java
```

You can't just replay commits. You have to replay commits while simultaneously mapping directories around the projects, as well as within the project. You also have to scrub in both directions so the tool doesn't suck in changes to build.xml about which you may or may not internally care, while similarly ignoring build_file in the other direction. You may also want to scrub out internal-only code, etc.

(Guava also strips out anything with @GwtIncompatible when we generate our GWT-compatible sources so we can maintain fewer sources in duplicate form, though that's not an issue we tackle in Guice)

(A version of) the syncing system we use is here (https://code.google.com/p/moe-java/) though it is maintained by volunteers only. The format has idiosyncrasies and all the experts were very busy remaking the universe in their day jobs.

It really is kind of awesome black magic. Dan Bentley and Yash Parghi are wizards. But for a company to sync two source code bases that are disparate in structure, it's a life-saver (well, ok… a day-job time-saver).

cheers,
Christian.


On 17 Apr 2013, at 4:59, Sam Berlin wrote:

It's mostly just the directory structures are pretty different. MOE makes it all magically happen, so we've been banking on using the newer version of that... It just took a while to figure out the right incantation to make
it happy. Now that Christian's figured it out, things should be smooth
again.

sam
On Apr 17, 2013 7:24 AM, "Tim Boudreau" <[email protected]> wrote:

On Wed, Apr 17, 2013 at 1:05 AM, Christian Gruber <[email protected]>wrote:

I'm now unblocked on where I was blocked earlier trying to get our
syncing tool to work between the internal google repository and the code
site repository.


Having set up and also rebuilt from the ground up a lot of build systems
over recent years, you've got me curious - what are you guys doing
internally that makes this hard? I know large organizations have their processes and codebases have their history (I worked for Sun, after all!). But I've got to say, if it takes months to build a diff and apply it, the
reason why must be pretty interesting.

-Tim

--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




--
You received this message because you are subscribed to the Google Groups "google-guice" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Christian Gruber :: Google, Inc. :: Java Core Libraries :: Dependency Injection
email: [email protected] :::: mobile: +1 (646) 807-9839

--
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to