
----

## Git

### Git commits

**Download**: [`r file_git_commits_evol`.gz](https://download.eclipse.org/dataeggs/projects/`r project_id`/`r file_git_commits_evol`.gz)

```{r git_commits_evol}
data <- read.csv(file=file_git_commits_evol, header=T)
```

File is [``r file_git_commits_evol``](https://download.eclipse.org/dataeggs/projects/`r project_id`/`r file_git_commits_evol`.gz), and has ``r ncol(data)`` columns for ``r nrow(data)`` entries.

```{r git_commits_viz}
data$commits_sum <- cumsum(data$commits)
data.xts <- xts(x = data[,c('commits_sum', 'commits', 'authors')], order.by=as.POSIXct(as.character(data[,c('date')]), format="%Y-%m-%d"))

time.min <- index(data.xts[1,])
time.max <- index(data.xts[nrow(data.xts)])
all.dates <- seq(time.min, time.max, by="days")
empty <- xts(order.by = all.dates)

merged.data <- merge(empty, data.xts, all=T)
merged.data[is.na(merged.data) == T] <- 0

p <-dygraph(merged.data[,c('commits')],
        main = paste('Daily commits for ', project_id, sep=''),
        width = 800, height = 250 ) %>%
      dyRangeSelector()
p
```

<br />

### Git log

**Download**: [`r file_git_log`.gz](https://download.eclipse.org/dataeggs/projects/`r project_id`/`r file_git_log`.gz)

File is [``r file_git_log``](https://download.eclipse.org/dataeggs/projects/`r project_id`/`r file_git_log`.gz), and full log has ``r countLines(file=file_git_log)`` lines.
